mirror of
https://github.com/taigrr/go-selfupdate
synced 2025-01-18 04:33:12 -08:00
55 lines
1.7 KiB
Markdown
55 lines
1.7 KiB
Markdown
go-selfupdate
|
|
=============
|
|
|
|
[](https://godoc.org/github.com/sanbornm/go-selfupdate/selfupdate)
|
|
[](https://travis-ci.org/sanbornm/go-selfupdate)
|
|
|
|
Enable your Golang applications to self update. Inspired by Chrome based on Heroku's [hk](https://github.com/heroku/hk).
|
|
|
|
## Features
|
|
|
|
* Tested on Mac, Linux, Arm, and Windows
|
|
* Creates binary diffs with [bsdiff](http://www.daemonology.net/bsdiff/) allowing small incremental updates
|
|
* Falls back to full binary update if diff fails to match SHA
|
|
|
|
## QuickStart
|
|
|
|
### Install library and update/patch creation utility
|
|
|
|
`go get -u github.com/sanbornm/go-selfupdate/...`
|
|
|
|
### Enable your App to Self Update
|
|
|
|
var updater = &selfupdate.Updater{
|
|
CurrentVersion: version,
|
|
ApiURL: "http://updates.yourdomain.com/",
|
|
BinURL: "http://updates.yourdomain.com/",
|
|
DiffURL: "http://updates.yourdomain.com/",
|
|
Dir: "update/",
|
|
CmdName: "myapp", // app name
|
|
}
|
|
|
|
if updater != nil {
|
|
go updater.BackgroundRun()
|
|
}
|
|
|
|
### Push Out and Update
|
|
|
|
go-selfupdate myapp 1.2
|
|
|
|
This will create a folder in your project called, *public* you can then rsync or transfer this to your webserver or S3.
|
|
|
|
If you are cross compiling you can specify a directory:
|
|
|
|
go-selfupdate /tmp/mybinares/ 1.2
|
|
|
|
The directory should contain files with the name, $GOOS-$ARCH. Example:
|
|
|
|
windows-386
|
|
darwin-amd64
|
|
linux-arm
|
|
|
|
If you are using [goxc](https://github.com/laher/goxc) you can output the files with this naming format by specifying this config:
|
|
|
|
"OutPath": "{{.Dest}}{{.PS}}{{.Version}}{{.PS}}{{.Os}}-{{.Arch}}",
|