Skip to content

Commit 2ceed16

Browse files
authored
Merge pull request #4 from jbowes/refresh-cache
Refresh the cache check time when results don't change
2 parents 12c7836 + 24f6e7a commit 2ceed16

File tree

2 files changed

+38
-29
lines changed

2 files changed

+38
-29
lines changed

impl/file.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ func (f *FileCacher) Get(context.Context) (*Info, error) {
2121
if err != nil {
2222
return nil, err
2323
}
24+
defer r.Close()
2425

2526
var i Info
2627
dec := json.NewDecoder(r)
@@ -34,6 +35,7 @@ func (f *FileCacher) Set(_ context.Context, i *Info) error {
3435
if err != nil {
3536
return err
3637
}
38+
defer w.Close()
3739

3840
enc := json.NewEncoder(w)
3941
enc.SetIndent("", " ")

whatsnew.go

Lines changed: 36 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -132,43 +132,50 @@ func doWork(ctx context.Context, opts *Options) (string, error) {
132132

133133
nextVer := opts.Version
134134
if now.Sub(i.CheckTime) < opts.Frequency {
135-
if cmp(nextVer, i.Version) < 0 {
136-
nextVer = i.Version
137-
}
135+
nextVer = i.Version
138136
} else {
139137
rels, etag, err := opts.Releaser.Get(ctx, i.Etag)
140-
// If we error, fall back to possibly using the value from the store
141-
if err != nil || len(rels) == 0 {
142-
if cmp(nextVer, i.Version) < 0 {
143-
return i.Version, nil
138+
if err != nil {
139+
// If we error, fall back to possibly using the value from the store
140+
nextVer = i.Version
141+
} else if len(rels) == 0 {
142+
// Cached result. refresh the checktime and store.
143+
_ = opts.Cacher.Set(ctx, &impl.Info{
144+
CheckTime: now,
145+
Etag: etag,
146+
Version: i.Version,
147+
})
148+
149+
nextVer = i.Version
150+
} else {
151+
// find the biggest non-prerelease version in releases.
152+
// TODO: could look at more than the first page. would only matter
153+
// for concurrent patch releases etc.
154+
var newVer string
155+
for _, rel := range rels {
156+
switch {
157+
case rel.Draft:
158+
case !isValid(rel.TagName):
159+
case rel.Prerelease || isPrerelease(rel.TagName):
160+
case cmp(newVer, rel.TagName) < 0:
161+
newVer = rel.TagName
162+
}
144163
}
145-
}
146-
// find the biggest non-prerelease version in releases.
147-
// TODO: could look at more than the first page. would only matter
148-
// for concurrent patch releases etc.
149-
var newVer string
150-
for _, rel := range rels {
151-
switch {
152-
case rel.Draft:
153-
case !isValid(rel.TagName):
154-
case rel.Prerelease || isPrerelease(rel.TagName):
155-
case cmp(newVer, rel.TagName) < 0:
156-
newVer = rel.TagName
164+
165+
if cmp(nextVer, newVer) < 1 {
166+
nextVer = newVer
157167
}
158-
}
159168

160-
if cmp(nextVer, newVer) < 1 {
161-
nextVer = newVer
169+
// TODO: make sure newVer is set
170+
_ = opts.Cacher.Set(ctx, &impl.Info{
171+
CheckTime: now,
172+
Etag: etag,
173+
Version: newVer, // we store the latest from the remote ignoring whats installed.
174+
})
162175
}
163-
164-
_ = opts.Cacher.Set(ctx, &impl.Info{
165-
CheckTime: now,
166-
Etag: etag,
167-
Version: newVer, // we store the latest from the remote ignoring whats installed.
168-
})
169176
}
170177

171-
if cmp(opts.Version, nextVer) == 0 {
178+
if cmp(opts.Version, nextVer) >= 0 {
172179
return "", nil
173180
}
174181

0 commit comments

Comments
 (0)