golang的私有化定制自动更新插件
shenwc
2024-11-26 5a1d99989fa32be1684b9290b4a58e8418b7b92d
_example/specific/specific.go
New file
@@ -0,0 +1,56 @@
package main
import (
   "fmt"
   "runtime"
   "github.com/zan8in/gologger"
   update "github.com/zan8in/goupdate"
   "github.com/zan8in/goupdate/progress"
   "github.com/zan8in/goupdate/stores/github"
)
func main() {
   // update polls(1) from tj/gh-polls on github
   m := &update.Manager{
      Command: "up",
      Store: &github.Store{
         Owner:   "apex",
         Repo:    "up",
         Version: "0.4.6",
      },
   }
   // fetch the target release
   release, err := m.GetRelease("0.4.5")
   if err != nil {
      gologger.Info().Msgf("error fetching release: %s", err)
      return
   }
   // find the tarball for this system
   a := release.FindTarball(runtime.GOOS, runtime.GOARCH)
   if a == nil {
      gologger.Error().Msg("no binary for your system")
      return
   }
   // whitespace
   fmt.Println()
   // download tarball to a tmp dir
   tarball, err := a.DownloadProxy(progress.Reader)
   if err != nil {
      gologger.Error().Msgf("error downloading: %s", err)
      return
   }
   // install it
   if err := m.Install(tarball); err != nil {
      gologger.Error().Msgf("error installing: %s", err)
      return
   }
   gologger.Info().Msgf("Updated to %s\n", release.Version)
}