MCPcopy Create free account
hub / github.com/ddev/ddev / AvailableUpdates

Function AvailableUpdates

pkg/updatecheck/updatecheck.go:14–55  ·  view source on GitHub ↗

AvailableUpdates returns true (along with a release URL) if there is an update available in the specified repo which is newer than the currentVersion string.

(repoOrg string, repoName string, currentVersion string)

Source from the content-addressed store, hash-verified

12
13// AvailableUpdates returns true (along with a release URL) if there is an update available in the specified repo which is newer than the currentVersion string.
14func AvailableUpdates(repoOrg string, repoName string, currentVersion string) (avail bool, newVersion string, releaseURL string, err error) {
15 newVersion = ""
16 ctx, client := github.GetGitHubClient(true)
17 opt := &github.ListOptions{Page: 1}
18 releases, resp, err := client.Repositories.ListReleases(ctx, repoOrg, repoName, opt)
19 if err != nil {
20 if tokenErr := github.HasInvalidGitHubToken(resp); tokenErr != nil {
21 ctx, client = github.GetGitHubClient(false)
22 releasesNoAuth, _, errNoAuth := client.Repositories.ListReleases(ctx, repoOrg, repoName, opt)
23 if errNoAuth == nil {
24 releases = releasesNoAuth
25 err = errNoAuth
26 }
27 }
28 }
29 if err != nil {
30 return false, newVersion, "", err
31 }
32
33 if isReleaseVersion(currentVersion) {
34 cv, err := semver.NewVersion(currentVersion)
35 if err != nil {
36 return false, newVersion, "", err
37 }
38 for _, release := range releases {
39 if *release.Prerelease {
40 continue
41 }
42 newReleaseVersion, err := semver.NewVersion(*release.TagName)
43 if err != nil {
44 return false, newVersion, "", err
45 }
46 newVersion = *release.TagName
47
48 if cv.Compare(newReleaseVersion) == -1 {
49 return true, newVersion, *release.HTMLURL, nil
50 }
51 }
52 }
53
54 return false, newVersion, "", nil
55}
56
57// IsUpdateNeeded returns true if the modification date on filepath is older than the duration specified.
58func IsUpdateNeeded(filepath string, updateInterval time.Duration) (bool, error) {

Callers 2

root.goFile · 0.92
TestAvailableUpdatesFunction · 0.85

Calls 3

GetGitHubClientFunction · 0.92
HasInvalidGitHubTokenFunction · 0.92
isReleaseVersionFunction · 0.85

Tested by 1

TestAvailableUpdatesFunction · 0.68