MCPcopy
hub / github.com/kopia/kopia / maybeCheckForUpdates

Method maybeCheckForUpdates

cli/update_check.go:160–195  ·  view source on GitHub ↗
(ctx context.Context)

Source from the content-addressed store, hash-verified

158}
159
160func (c *App) maybeCheckForUpdates(ctx context.Context) (string, error) {
161 if v := os.Getenv(c.EnvName(checkForUpdatesEnvar)); v != "" {
162 // see if environment variable is set to false.
163 if b, err := strconv.ParseBool(v); err == nil && !b {
164 return "", errors.New("update check disabled")
165 }
166 }
167
168 us, err := c.getUpdateState()
169 if err != nil {
170 return "", err
171 }
172
173 if err := c.maybeCheckGithub(ctx, us); err != nil {
174 return "", errors.Wrap(err, "error checking GitHub")
175 }
176
177 log(ctx).Debugf("build version %v, available %v", ensureVPrefix(repo.BuildVersion), ensureVPrefix(us.AvailableVersion))
178
179 if us.AvailableVersion == "" || semver.Compare(ensureVPrefix(repo.BuildVersion), ensureVPrefix(us.AvailableVersion)) >= 0 {
180 // no new version available
181 return "", nil
182 }
183
184 if clock.Now().After(us.NextNotifyTime) {
185 us.NextNotifyTime = clock.Now().Add(c.updateAvailableNotifyInterval)
186 if err := c.writeUpdateState(us); err != nil {
187 return "", errors.Wrap(err, "unable to write update state")
188 }
189
190 return us.AvailableVersion, nil
191 }
192
193 // no time to notify yet
194 return "", nil
195}
196
197func (c *App) maybeCheckGithub(ctx context.Context, us *updateState) error {
198 if !clock.Now().After(us.NextCheckTime) {

Callers 1

Calls 9

EnvNameMethod · 0.95
getUpdateStateMethod · 0.95
maybeCheckGithubMethod · 0.95
writeUpdateStateMethod · 0.95
NowFunction · 0.92
ensureVPrefixFunction · 0.85
AfterMethod · 0.80
CompareMethod · 0.45
AddMethod · 0.45

Tested by

no test coverage detected