package main
|
|
import (
|
"fmt"
|
"runtime"
|
|
"github.com/apex/log"
|
"github.com/kierdavis/ansi"
|
|
update "github.com/zan8in/goupdate"
|
"github.com/zan8in/goupdate/progress"
|
"github.com/zan8in/goupdate/stores/github"
|
)
|
|
func init() {
|
log.SetLevel(log.DebugLevel)
|
}
|
|
func main() {
|
ansi.HideCursor()
|
defer ansi.ShowCursor()
|
|
// update polls(1) from tj/gh-polls on github
|
m := &update.Manager{
|
Command: "polls",
|
Store: &github.Store{
|
Owner: "tj",
|
Repo: "gh-polls",
|
Version: "0.0.3",
|
},
|
}
|
|
// fetch the new releases
|
releases, err := m.LatestReleases()
|
if err != nil {
|
log.Fatalf("error fetching releases: %s", err)
|
}
|
|
// no updates
|
if len(releases) == 0 {
|
log.Info("no updates")
|
return
|
}
|
|
// latest release
|
latest := releases[0]
|
|
// find the tarball for this system
|
a := latest.FindTarball(runtime.GOOS, runtime.GOARCH)
|
if a == nil {
|
log.Info("no binary for your system")
|
return
|
}
|
|
// whitespace
|
fmt.Println()
|
|
// download tarball to a tmp dir
|
tarball, err := a.DownloadProxy(progress.Reader)
|
if err != nil {
|
log.Fatalf("error downloading: %s", err)
|
}
|
|
// install it
|
if err := m.Install(tarball); err != nil {
|
log.Fatalf("error installing: %s", err)
|
}
|
|
fmt.Printf("Updated to %s\n", latest.Version)
|
}
|