add version check

This commit is contained in:
2025-07-07 11:02:07 -07:00
parent a5b3719d33
commit 970d8c654f
2 changed files with 46 additions and 1 deletions

10
main.go
View File

@ -22,6 +22,16 @@ const (
)
func main() {
outOfDate, err := needUpdate()
if err != nil {
log.Fatal(err)
}
if outOfDate {
fmt.Println("There is a new version of epochcli, please update before running")
os.Exit(1)
}
var (
helpFlag bool
updateOnlyFlag bool

View File

@ -1,3 +1,38 @@
package main
const version = "1.0.4"
import (
"fmt"
"io"
"net/http"
"regexp"
)
const (
version = "1.0.4"
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)
}
re := regexp.MustCompile(`const version = "([\d.]+)"`)
ver := re.FindStringSubmatch(string(b))
if len(ver) < 2 || ver[1] == "" {
return false, fmt.Errorf("unable to find version in response")
}
return ver[1] != version, nil
}