6
6
"strings"
7
7
8
8
"github.com/Masterminds/semver/v3"
9
- "github.com/google/go-github/v30/github"
10
9
)
11
10
12
11
var reVersion = regexp .MustCompile (`\d+\.\d+\.\d+` )
@@ -31,14 +30,8 @@ func (up *Updater) DetectVersion(slug string, version string) (release *Release,
31
30
return nil , false , fmt .Errorf ("invalid slug format. It should be 'owner/name': %s" , slug )
32
31
}
33
32
34
- rels , res , err := up .api . Repositories . ListReleases (up . apiCtx , repo [0 ], repo [1 ], nil )
33
+ rels , err := up .source . ListReleases (repo [0 ], repo [1 ])
35
34
if err != nil {
36
- log .Printf ("API returned an error response: %s" , err )
37
- if res != nil && res .StatusCode == 404 {
38
- // 404 means repository not found or release not found. It's not an error here.
39
- err = nil
40
- log .Print ("API returned 404. Repository or release not found" )
41
- }
42
35
return nil , false , err
43
36
}
44
37
@@ -50,19 +43,19 @@ func (up *Updater) DetectVersion(slug string, version string) (release *Release,
50
43
url := asset .GetBrowserDownloadURL ()
51
44
log .Printf ("Successfully fetched the latest release. tag: %s, name: %s, URL: %s, Asset: %s" , rel .GetTagName (), rel .GetName (), rel .GetURL (), url )
52
45
53
- publishedAt := rel .GetPublishedAt (). Time
46
+ publishedAt := rel .GetPublishedAt ()
54
47
release = & Release {
55
48
version : ver ,
49
+ repoOwner : repo [0 ],
50
+ repoName : repo [1 ],
56
51
AssetURL : url ,
57
52
AssetByteSize : asset .GetSize (),
58
53
AssetID : asset .GetID (),
59
54
ValidationAssetID : - 1 ,
60
- URL : rel .GetHTMLURL (),
61
- ReleaseNotes : rel .GetBody (),
55
+ URL : rel .GetURL (),
56
+ ReleaseNotes : rel .GetReleaseNotes (),
62
57
Name : rel .GetName (),
63
58
PublishedAt : & publishedAt ,
64
- RepoOwner : repo [0 ],
65
- RepoName : repo [1 ],
66
59
OS : up .os ,
67
60
Arch : up .arch ,
68
61
Arm : up .arm ,
@@ -80,9 +73,11 @@ func (up *Updater) DetectVersion(slug string, version string) (release *Release,
80
73
return release , true , nil
81
74
}
82
75
83
- func findAssetFromRelease (rel * github.RepositoryRelease ,
84
- suffixes []string , targetVersion string , filters []* regexp.Regexp ) (* github.ReleaseAsset , * semver.Version , bool ) {
85
-
76
+ func findAssetFromRelease (rel SourceRelease , suffixes []string , targetVersion string , filters []* regexp.Regexp ) (SourceAsset , * semver.Version , bool ) {
77
+ if rel == nil {
78
+ log .Print ("Empty release instance!" )
79
+ return nil , nil , false
80
+ }
86
81
if targetVersion != "" && targetVersion != rel .GetTagName () {
87
82
log .Printf ("Skip %s not matching to specified version %s" , rel .GetTagName (), targetVersion )
88
83
return nil , nil , false
@@ -104,7 +99,7 @@ func findAssetFromRelease(rel *github.RepositoryRelease,
104
99
return nil , nil , false
105
100
}
106
101
if indices [0 ] > 0 {
107
- log .Printf ("Strip prefix '%s' from '%s'" , verText [:indices [0 ]], verText )
102
+ // log.Printf("Strip prefix '%s' from '%s'", verText[:indices[0]], verText)
108
103
verText = verText [indices [0 ]:]
109
104
}
110
105
@@ -116,7 +111,7 @@ func findAssetFromRelease(rel *github.RepositoryRelease,
116
111
return nil , nil , false
117
112
}
118
113
119
- for _ , asset := range rel .Assets {
114
+ for _ , asset := range rel .GetAssets () {
120
115
name := asset .GetName ()
121
116
if len (filters ) > 0 {
122
117
// if some filters are defined, match them: if any one matches, the asset is selected
@@ -146,20 +141,16 @@ func findAssetFromRelease(rel *github.RepositoryRelease,
146
141
return nil , nil , false
147
142
}
148
143
149
- func findValidationAsset (rel * github. RepositoryRelease , validationName string ) (* github. ReleaseAsset , bool ) {
150
- for _ , asset := range rel .Assets {
144
+ func findValidationAsset (rel SourceRelease , validationName string ) (SourceAsset , bool ) {
145
+ for _ , asset := range rel .GetAssets () {
151
146
if asset .GetName () == validationName {
152
147
return asset , true
153
148
}
154
149
}
155
150
return nil , false
156
151
}
157
152
158
- func (up * Updater ) findReleaseAndAsset (rels []* github.RepositoryRelease , targetVersion string ,
159
- ) (* github.RepositoryRelease ,
160
- * github.ReleaseAsset ,
161
- * semver.Version ,
162
- bool ) {
153
+ func (up * Updater ) findReleaseAndAsset (rels []SourceRelease , targetVersion string ) (SourceRelease , SourceAsset , * semver.Version , bool ) {
163
154
// we put the detected arch at the end of the list: that's fine for ARM so far,
164
155
// as the additional arch are more accurate than the generic one
165
156
for _ , arch := range append (generateAdditionalArch (up .arch , up .arm ), up .arch ) {
@@ -175,10 +166,10 @@ func (up *Updater) findReleaseAndAsset(rels []*github.RepositoryRelease, targetV
175
166
func findReleaseAndAssetForArch (
176
167
os string ,
177
168
arch string ,
178
- rels []* github. RepositoryRelease ,
169
+ rels []SourceRelease ,
179
170
targetVersion string ,
180
171
filters []* regexp.Regexp ,
181
- ) (* github. RepositoryRelease , * github. ReleaseAsset , * semver.Version , bool ) {
172
+ ) (SourceRelease , SourceAsset , * semver.Version , bool ) {
182
173
// Generate candidates
183
174
suffixes := make ([]string , 0 , 2 * 7 * 2 )
184
175
for _ , sep := range []rune {'_' , '-' } {
@@ -193,8 +184,8 @@ func findReleaseAndAssetForArch(
193
184
}
194
185
195
186
var ver * semver.Version
196
- var asset * github. ReleaseAsset
197
- var release * github. RepositoryRelease
187
+ var asset SourceAsset
188
+ var release SourceRelease
198
189
199
190
// Find the latest version from the list of releases.
200
191
// Returned list from GitHub API is in the order of the date when created.
0 commit comments