Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/inconshreveable/go-update
Build self-updating Golang programs
https://github.com/inconshreveable/go-update
Last synced: 6 days ago
JSON representation
Build self-updating Golang programs
- Host: GitHub
- URL: https://github.com/inconshreveable/go-update
- Owner: inconshreveable
- License: other
- Created: 2013-07-13T21:48:31.000Z (over 11 years ago)
- Default Branch: master
- Last Pushed: 2022-06-24T10:20:58.000Z (over 2 years ago)
- Last Synced: 2024-11-05T02:36:08.585Z (9 days ago)
- Language: Go
- Homepage:
- Size: 104 KB
- Stars: 2,124
- Watchers: 52
- Forks: 235
- Open Issues: 25
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# go-update: Build self-updating Go programs [![godoc reference](https://godoc.org/github.com/inconshreveable/go-update?status.png)](https://godoc.org/github.com/inconshreveable/go-update)
Package update provides functionality to implement secure, self-updating Go programs (or other single-file targets)
A program can update itself by replacing its executable file with a new version.It provides the flexibility to implement different updating user experiences
like auto-updating, or manual user-initiated updates. It also boasts
advanced features like binary patching and code signing verification.Example of updating from a URL:
```go
import (
"fmt"
"net/http""github.com/inconshreveable/go-update"
)func doUpdate(url string) error {
resp, err := http.Get(url)
if err != nil {
return err
}
defer resp.Body.Close()
err := update.Apply(resp.Body, update.Options{})
if err != nil {
// error handling
}
return err
}
```## Features
- Cross platform support (Windows too!)
- Binary patch application
- Checksum verification
- Code signing verification
- Support for updating arbitrary files## [equinox.io](https://equinox.io)
[equinox.io](https://equinox.io) is a complete ready-to-go updating solution built on top of go-update that provides:- Hosted updates
- Update channels (stable, beta, nightly, ...)
- Dynamically computed binary diffs
- Automatic key generation and code
- Release tooling with proper code signing
- Update/download metrics## API Compatibility Promises
The master branch of `go-update` is *not* guaranteed to have a stable API over time. For any production application, you should vendor
your dependency on `go-update` with a tool like git submodules, [gb](http://getgb.io/) or [govendor](https://github.com/kardianos/govendor).The `go-update` package makes the following promises about API compatibility:
1. A list of all API-breaking changes will be documented in this README.
1. `go-update` will strive for as few API-breaking changes as possible.## API Breaking Changes
- **Sept 3, 2015**: The `Options` struct passed to `Apply` was changed to be passed by value instead of passed by pointer. Old API at `28de026`.
- **Aug 9, 2015**: 2.0 API. Old API at `221d034` or `gopkg.in/inconshreveable/go-update.v0`.## License
Apache