goselfupdatetest/main.go
Lukas Bachschwell 6d239c5326
Actually use gitea source
Signed-off-by: Lukas Bachschwell <lukas@lbsfilm.at>
2021-01-09 16:47:48 +01:00

70 lines
1.6 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" || os.Args[1] == "up" {
fmt.Print("Trying Upgrade... ")
err := update(gitTag)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("Success")
}
} 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 {
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
}