@@ -33,7 +33,7 @@ type APIReleaseAsset struct {
33
33
Size int `json:"size"`
34
34
}
35
35
36
- type assetNamePredicate func (assetName string ) bool
36
+ type AssetNamePredicate func (assetName string ) bool
37
37
38
38
func (gr GHRelease ) GetGHReleases (filterOff bool , assetFilter * regexp.Regexp ) (* GHReleaseDl , error ) {
39
39
var tag string
@@ -85,13 +85,19 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
85
85
return releaseAssets
86
86
}
87
87
88
- osArchPredicate := func (match string ) assetNamePredicate {
88
+ // The common predicate rule suits for both OS and ARCH
89
+ osArchPredicate := func (match string ) AssetNamePredicate {
89
90
return func (assetName string ) bool {
90
- return strings .Contains (assetName , match ) ||
91
- (match == "amd64" && (strings .Contains (assetName , "x64" ) || strings .Contains (assetName , "x86_64" )))
91
+ if strings .Contains (assetName , match ) {
92
+ return true
93
+ }
94
+ if match == "amd64" {
95
+ return strings .Contains (assetName , "x64" )
96
+ }
97
+ return strings .Contains (assetName , "x64_64" )
92
98
}
93
99
}
94
- predicates := []assetNamePredicate {
100
+ predicates := []AssetNamePredicate {
95
101
osArchPredicate (OS ),
96
102
osArchPredicate (ARCH ),
97
103
}
@@ -102,6 +108,7 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
102
108
}
103
109
return filterAssets (releaseAssets , predicates )
104
110
}()
111
+
105
112
matchedIdx := 0
106
113
if len (matchedAssets ) != 1 {
107
114
var choices []string
@@ -115,16 +122,16 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
115
122
return & GHReleaseDl {binaryName , asset .DownloadUrl , int64 (asset .Size )}, nil
116
123
}
117
124
118
- // filterAssets assets using the provided predicates, falling back to the default assets if no match is found
119
- func filterAssets (assets []APIReleaseAsset , predicates []assetNamePredicate ) []APIReleaseAsset {
125
+ func filterAssets (assets []APIReleaseAsset , predicates []AssetNamePredicate ) []APIReleaseAsset {
120
126
ret := assets
121
127
for _ , p := range predicates {
122
128
ret = filter (ret , p )
123
129
}
124
130
return ret
125
131
}
126
132
127
- func filter (assets []APIReleaseAsset , predicate assetNamePredicate ) []APIReleaseAsset {
133
+ // filterAssets assets using the provided predicates, falling back to the default assets if no match is found
134
+ func filter (assets []APIReleaseAsset , predicate AssetNamePredicate ) []APIReleaseAsset {
128
135
var ret []APIReleaseAsset
129
136
for _ , asset := range assets {
130
137
lowerName := strings .ToLower (asset .Name )
0 commit comments