jpillora / overseer

Monitorable, gracefully restarting, self-upgrading binaries in Go (golang)
MIT License
2.32k stars 209 forks source link

Support binary diffs, versions #4

Closed tgulacsi closed 8 years ago

tgulacsi commented 8 years ago

I've stumbled upon https://github.com/sanbornm/go-selfupdate which solves the binary diff problem nicely, but lacks overseer's great graceful restart capabilities.

Maybe a marriage made in heaven?

a) copy code from go-selfupdate b) just use go-selfupdate cli to generate the versions, and add a proper fetcher for such config?

I'm willing to help, but please decide which way to go, what kind and level of integration is desired!

jpillora commented 8 years ago

I just wrote some notes on this here CONTRIBUTING. If you'd like to give this a shot, I'd recommend giving that a read and starting with a "stand-alone fetcher" which could convert go-selfupdate binaries into full binaries to them pass down to overseer as a normal update.

tgulacsi commented 8 years ago

I've started a new fetcher, based on go-selfupdate. As no inner workings are exported, I had to copy-paste most of it - though it is not much...

But as overseer does not use versioning, I had to rethink the whole url structure (see https://github.com/tgulacsi/overseer/blob/selfupdate/fetcher/fetcher_selfupdate_http.go#L23), and this way we'll need to rewrite the command line client, too.

Any suggestions on the repo name for this fetcher and the accompanying cli tool?

jpillora commented 8 years ago

Looks good to me :) Only minor note would be to allow the user to control the format of the binaries (scroll up from here for example) since they might only have the OS in the filename, or use underscores instead of hyphens. Though I guess if they have to compile using the CLI tool, then maybe you can enforce the file name?

As for the name, maybe just prefix something with overseer- to denote an overseer "plugin"?

For early simplicity and future extensibility I think make the tool contain a single command build which somewhat mirrors go build – though it'll require an extra argument to the previous binary... sorry, I haven't thought it through too much yet

Let me know when the new repos up, I'll link to it in the docs. When I get time – might be months away – I'll ping you to discuss merging it into overseer core :)

tgulacsi commented 8 years ago

PTAL https://github.com/tgulacsi/overseer-bindiff

Now it mimics go-selfupdate's behaviour, as it needs the binary's path as the argument.

jpillora commented 8 years ago

Added to docs https://github.com/jpillora/overseer/blob/master/README.md#third-party-fetchers