go-utils/updater/update.go

38 lines
651 B
Go
Raw Normal View History

2021-08-14 20:28:50 +00:00
package updater
import (
"os"
"github.com/MedzikUser/go-github-selfupdate/selfupdate"
"github.com/blang/semver/v4"
)
/*
Checks for available updates
If there is an update, this function will automatically update your program
*/
func (c *Client) Update() error {
release, found, err := selfupdate.DetectLatest(c.GitHub)
if err != nil {
return err
}
version, err := semver.Parse(c.Version)
if err != nil || !found || release.Version.LTE(version) {
return err
}
exe, err := os.Executable()
if err != nil {
return err
}
err = selfupdate.UpdateTo(release.AssetURL, exe, c.Binary)
if err != nil {
return err
}
return nil
}