goselfupdatetest/main.go

70 lines
1.6 KiB
Go
Raw Permalink Normal View History

2021-01-09 15:14:47 +00:00
package main
import (
"errors"
2021-01-09 15:14:47 +00:00
"fmt"
"log"
2021-01-09 15:14:47 +00:00
"os"
"runtime"
selfupdate "github.com/creativeprojects/go-selfupdate"
2021-01-09 15:14:47 +00:00
)
//go:generate sh injectGitVars.sh
2021-01-09 15:14:47 +00:00
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" || os.Args[1] == "up" {
fmt.Println("Trying Upgrade... ")
err := update(gitTag)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("Success")
}
2021-01-09 15:14:47 +00:00
} else if os.Args[1] == "version" {
fmt.Print("Version ")
fmt.Println(gitTag)
2021-01-09 15:14:47 +00:00
} else {
fmt.Println("provide a valid command (version or upgrade)")
}
}
func update(version string) error {
source, _ := selfupdate.NewGiteaSource(selfupdate.GiteaConfig{BaseURL: "https://git.lbsfilm.at/"})
updater, err := selfupdate.NewUpdater(selfupdate.Config{
Source: source,
Validator: nil,
OS: runtime.GOOS,
Arch: runtime.GOARCH,
Arm: 0,
})
latest, found, err := updater.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 := updater.UpdateTo(latest, exe); err != nil {
return fmt.Errorf("error occurred while updating binary: %v", err)
}
log.Printf("Successfully updated to version %s", latest.Version())
return nil
}