Files
epochcli/version.go
2025-08-08 09:47:48 -07:00

52 lines
1.1 KiB
Go

package main
import (
"fmt"
"io"
"net/http"
"regexp"
"github.com/Masterminds/semver/v3"
)
const (
version = "1.1.0"
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
}