goselfupdatetest/main.go

56 lines
1.3 KiB
Go

package main
import (
"errors"
"fmt"
"log"
"os"
"runtime"
selfupdate "github.com/creativeprojects/go-selfupdate"
)
//go:generate sh injectGitVars.sh
var version = "v0.1.0"
func main() {
if len(os.Args) < 2 {
fmt.Println("provide a command")
os.Exit(1)
} else if os.Args[1] == "upgrade" {
fmt.Print("Trying Upgrade... ")
update(gitTag)
} else if os.Args[1] == "version" {
fmt.Print("Version ")
fmt.Println(gitTag)
} else {
fmt.Println("provide a valid command (version or upgrade)")
}
}
func update(version string) error {
latest, found, err := selfupdate.DetectLatest("lbsadmin/goselfupdatetest")
if err != nil {
return fmt.Errorf("error occurred while detecting version: %v", err)
}
if !found {
return fmt.Errorf("latest version for %s/%s could not be found from github repository", runtime.GOOS, runtime.GOARCH)
}
if latest.LessOrEqual(version) {
log.Printf("Current version (%s) is the latest", version)
return nil
}
exe, err := os.Executable()
if err != nil {
return errors.New("could not locate executable path")
}
if err := selfupdate.UpdateTo(latest.AssetURL, latest.AssetName, exe); err != nil {
return fmt.Errorf("error occurred while updating binary: %v", err)
}
log.Printf("Successfully updated to version %s", latest.Version())
return nil
}