@@ -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