Skip to content

Commit d74ea3d

Browse files
author
alexphzhou
committed
chore: clean up common predicate conditions
1 parent 5232041 commit d74ea3d

File tree

1 file changed

+15
-8
lines changed

1 file changed

+15
-8
lines changed

gh.go

+15-8
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ type APIReleaseAsset struct {
3333
Size int `json:"size"`
3434
}
3535

36-
type assetNamePredicate func(assetName string) bool
36+
type AssetNamePredicate func(assetName string) bool
3737

3838
func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*GHReleaseDl, error) {
3939
var tag string
@@ -85,13 +85,19 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
8585
return releaseAssets
8686
}
8787

88-
osArchPredicate := func(match string) assetNamePredicate {
88+
// The common predicate rule suits for both OS and ARCH
89+
osArchPredicate := func(match string) AssetNamePredicate {
8990
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")
9298
}
9399
}
94-
predicates := []assetNamePredicate{
100+
predicates := []AssetNamePredicate{
95101
osArchPredicate(OS),
96102
osArchPredicate(ARCH),
97103
}
@@ -102,6 +108,7 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
102108
}
103109
return filterAssets(releaseAssets, predicates)
104110
}()
111+
105112
matchedIdx := 0
106113
if len(matchedAssets) != 1 {
107114
var choices []string
@@ -115,16 +122,16 @@ func (gr GHRelease) GetGHReleases(filterOff bool, assetFilter *regexp.Regexp) (*
115122
return &GHReleaseDl{binaryName, asset.DownloadUrl, int64(asset.Size)}, nil
116123
}
117124

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 {
120126
ret := assets
121127
for _, p := range predicates {
122128
ret = filter(ret, p)
123129
}
124130
return ret
125131
}
126132

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 {
128135
var ret []APIReleaseAsset
129136
for _, asset := range assets {
130137
lowerName := strings.ToLower(asset.Name)

0 commit comments

Comments
 (0)