@@ -24,45 +24,36 @@ type StateEntry struct {
2424
2525// CheckForUpdate checks whether this software has had a newer release on GitHub
2626func CheckForUpdate (client * api.Client , stateFilePath , repo , currentVersion string ) (* ReleaseInfo , error ) {
27- releaseInfo , err := getLatestReleaseInfo (client , stateFilePath , repo )
27+ stateEntry , _ := getStateEntry (stateFilePath )
28+ if stateEntry != nil && time .Since (stateEntry .CheckedForUpdateAt ).Hours () < 24 {
29+ return nil , nil
30+ }
31+
32+ releaseInfo , err := getLatestReleaseInfo (client , repo )
2833 if err != nil {
2934 return nil , err
3035 }
3136
32- if releaseInfo == nil {
33- return nil , nil
37+ err = setStateEntry (stateFilePath , time .Now (), * releaseInfo )
38+ if err != nil {
39+ return nil , err
3440 }
3541
36- if versionGreaterThan (releaseInfo .LatestRelease . Version , currentVersion ) {
37- return & releaseInfo . LatestRelease , nil
42+ if versionGreaterThan (releaseInfo .Version , currentVersion ) {
43+ return releaseInfo , nil
3844 }
3945
4046 return nil , nil
4147}
4248
43- func getLatestReleaseInfo (client * api.Client , stateFilePath , repo string ) (* StateEntry , error ) {
44- stateEntry , err := getStateEntry (stateFilePath )
45- if err == nil && time .Since (stateEntry .CheckedForUpdateAt ).Hours () < 24 {
46- return nil , nil
47- }
48-
49+ func getLatestReleaseInfo (client * api.Client , repo string ) (* ReleaseInfo , error ) {
4950 var latestRelease ReleaseInfo
50- err = client .REST (ghinstance .Default (), "GET" , fmt .Sprintf ("repos/%s/releases/latest" , repo ), nil , & latestRelease )
51- if err != nil {
52- return nil , err
53- }
54-
55- err = setStateEntry (stateFilePath , time .Now (), latestRelease )
56- if err != nil {
57- return nil , err
58- }
59-
60- stateEntry , err = getStateEntry (stateFilePath )
51+ err := client .REST (ghinstance .Default (), "GET" , fmt .Sprintf ("repos/%s/releases/latest" , repo ), nil , & latestRelease )
6152 if err != nil {
6253 return nil , err
6354 }
6455
65- return stateEntry , nil
56+ return & latestRelease , nil
6657}
6758
6859func getStateEntry (stateFilePath string ) (* StateEntry , error ) {
0 commit comments