52 lines
1.1 KiB
Go
52 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"io"
|
|
"net/http"
|
|
"regexp"
|
|
|
|
"github.com/Masterminds/semver/v3"
|
|
)
|
|
|
|
const (
|
|
version = "1.1.1"
|
|
versionUrl = "https://git.burkey.co/eburk/epochcli/raw/branch/master/version.go"
|
|
)
|
|
|
|
func needUpdate() (bool, error) {
|
|
resp, err := http.Get(versionUrl)
|
|
if err != nil {
|
|
return false, fmt.Errorf("unable to get version file: %v", err)
|
|
}
|
|
defer resp.Body.Close()
|
|
|
|
if resp.StatusCode != http.StatusOK {
|
|
return false, fmt.Errorf("failed to download update, status code: %d", resp.StatusCode)
|
|
}
|
|
|
|
b, err := io.ReadAll(resp.Body)
|
|
if err != nil {
|
|
return false, fmt.Errorf("unable to read response body: %v", err)
|
|
}
|
|
|
|
fmt.Println(string(b))
|
|
re := regexp.MustCompile(`version\s+=\s+"(\d+.\d+.\d+)"`)
|
|
ver := re.FindStringSubmatch(string(b))
|
|
if ver[1] == "" {
|
|
return false, fmt.Errorf("unable to parse version number")
|
|
}
|
|
|
|
curVer, err := semver.NewVersion(version)
|
|
if err != nil {
|
|
return false, fmt.Errorf("unable to parse current version to semver: %v", err)
|
|
}
|
|
|
|
newVer, err := semver.NewVersion(ver[1])
|
|
if err != nil {
|
|
return false, fmt.Errorf("unable to parse new version to semver: %v", err)
|
|
}
|
|
|
|
return curVer != newVer, nil
|
|
}
|