MCPcopy Create free account
hub / github.com/MiniCodeMonkey/chief / CheckForUpdate

Function CheckForUpdate

internal/update/update.go:58–92  ·  view source on GitHub ↗

CheckForUpdate checks if a newer version is available.

(currentVersion string, opts Options)

Source from the content-addressed store, hash-verified

56
57// CheckForUpdate checks if a newer version is available.
58func CheckForUpdate(currentVersion string, opts Options) (*CheckResult, error) {
59 current := normalizeVersion(currentVersion)
60
61 client := &http.Client{Timeout: checkTimeout}
62 resp, err := client.Get(opts.releasesURL())
63 if err != nil {
64 return nil, fmt.Errorf("fetching latest release: %w", err)
65 }
66 defer resp.Body.Close()
67
68 // Rate limited — silently assume current version is up to date
69 if resp.StatusCode == http.StatusForbidden {
70 return &CheckResult{
71 CurrentVersion: current,
72 LatestVersion: current,
73 UpdateAvailable: false,
74 }, nil
75 }
76 if resp.StatusCode != http.StatusOK {
77 return nil, fmt.Errorf("GitHub API returned status %d", resp.StatusCode)
78 }
79
80 var release Release
81 if err := json.NewDecoder(resp.Body).Decode(&release); err != nil {
82 return nil, fmt.Errorf("parsing release response: %w", err)
83 }
84
85 latest := normalizeVersion(release.TagName)
86
87 return &CheckResult{
88 CurrentVersion: current,
89 LatestVersion: latest,
90 UpdateAvailable: baseVersion(current) != latest && current != "dev",
91 }, nil
92}
93
94// PerformUpdate downloads and installs the latest version.
95func PerformUpdate(currentVersion string, opts Options) (*CheckResult, error) {

Calls 3

normalizeVersionFunction · 0.85
baseVersionFunction · 0.85
releasesURLMethod · 0.80