Skip to content

Commit 6ccebcb

Browse files
committed
feat: filter by major version
1 parent 4e95f26 commit 6ccebcb

File tree

6 files changed

+14297
-13
lines changed

6 files changed

+14297
-13
lines changed

assets/github-action-config-v1.json

Lines changed: 227 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,227 @@
1+
{
2+
"MinorVersionToConfig": {
3+
"latest": {
4+
"TargetVersion": "v1.63.4",
5+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.63.4/golangci-lint-1.63.4-linux-amd64.tar.gz"
6+
},
7+
"v1.10": {
8+
"Error": "golangci-lint version 'v1.10' isn't supported: we support only v1.28.3 and later versions"
9+
},
10+
"v1.11": {
11+
"Error": "golangci-lint version 'v1.11' isn't supported: we support only v1.28.3 and later versions"
12+
},
13+
"v1.12": {
14+
"Error": "golangci-lint version 'v1.12' isn't supported: we support only v1.28.3 and later versions"
15+
},
16+
"v1.13": {
17+
"Error": "golangci-lint version 'v1.13' isn't supported: we support only v1.28.3 and later versions"
18+
},
19+
"v1.14": {
20+
"Error": "golangci-lint version 'v1.14' isn't supported: we support only v1.28.3 and later versions"
21+
},
22+
"v1.15": {
23+
"Error": "golangci-lint version 'v1.15' isn't supported: we support only v1.28.3 and later versions"
24+
},
25+
"v1.16": {
26+
"Error": "golangci-lint version 'v1.16' isn't supported: we support only v1.28.3 and later versions"
27+
},
28+
"v1.17": {
29+
"Error": "golangci-lint version 'v1.17' isn't supported: we support only v1.28.3 and later versions"
30+
},
31+
"v1.18": {
32+
"Error": "golangci-lint version 'v1.18' isn't supported: we support only v1.28.3 and later versions"
33+
},
34+
"v1.19": {
35+
"Error": "golangci-lint version 'v1.19' isn't supported: we support only v1.28.3 and later versions"
36+
},
37+
"v1.20": {
38+
"Error": "golangci-lint version 'v1.20' isn't supported: we support only v1.28.3 and later versions"
39+
},
40+
"v1.21": {
41+
"Error": "golangci-lint version 'v1.21' isn't supported: we support only v1.28.3 and later versions"
42+
},
43+
"v1.22": {
44+
"Error": "golangci-lint version 'v1.22' isn't supported: we support only v1.28.3 and later versions"
45+
},
46+
"v1.23": {
47+
"Error": "golangci-lint version 'v1.23' isn't supported: we support only v1.28.3 and later versions"
48+
},
49+
"v1.24": {
50+
"Error": "golangci-lint version 'v1.24' isn't supported: we support only v1.28.3 and later versions"
51+
},
52+
"v1.25": {
53+
"Error": "golangci-lint version 'v1.25' isn't supported: we support only v1.28.3 and later versions"
54+
},
55+
"v1.26": {
56+
"Error": "golangci-lint version 'v1.26' isn't supported: we support only v1.28.3 and later versions"
57+
},
58+
"v1.27": {
59+
"Error": "golangci-lint version 'v1.27' isn't supported: we support only v1.28.3 and later versions"
60+
},
61+
"v1.28": {
62+
"TargetVersion": "v1.28.3",
63+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.28.3/golangci-lint-1.28.3-linux-amd64.tar.gz"
64+
},
65+
"v1.29": {
66+
"TargetVersion": "v1.29.0",
67+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.29.0/golangci-lint-1.29.0-linux-amd64.tar.gz"
68+
},
69+
"v1.3": {
70+
"Error": "golangci-lint version 'v1.3' isn't supported: we support only v1.28.3 and later versions"
71+
},
72+
"v1.30": {
73+
"TargetVersion": "v1.30.0",
74+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.30.0/golangci-lint-1.30.0-linux-amd64.tar.gz"
75+
},
76+
"v1.31": {
77+
"TargetVersion": "v1.31.0",
78+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.31.0/golangci-lint-1.31.0-linux-amd64.tar.gz"
79+
},
80+
"v1.32": {
81+
"TargetVersion": "v1.32.2",
82+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.32.2/golangci-lint-1.32.2-linux-amd64.tar.gz"
83+
},
84+
"v1.33": {
85+
"TargetVersion": "v1.33.2",
86+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.33.2/golangci-lint-1.33.2-linux-amd64.tar.gz"
87+
},
88+
"v1.34": {
89+
"TargetVersion": "v1.34.1",
90+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.34.1/golangci-lint-1.34.1-linux-amd64.tar.gz"
91+
},
92+
"v1.35": {
93+
"TargetVersion": "v1.35.2",
94+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.35.2/golangci-lint-1.35.2-linux-amd64.tar.gz"
95+
},
96+
"v1.36": {
97+
"TargetVersion": "v1.36.0",
98+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.36.0/golangci-lint-1.36.0-linux-amd64.tar.gz"
99+
},
100+
"v1.37": {
101+
"TargetVersion": "v1.37.1",
102+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.37.1/golangci-lint-1.37.1-linux-amd64.tar.gz"
103+
},
104+
"v1.38": {
105+
"TargetVersion": "v1.38.0",
106+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.38.0/golangci-lint-1.38.0-linux-amd64.tar.gz"
107+
},
108+
"v1.39": {
109+
"TargetVersion": "v1.39.0",
110+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.39.0/golangci-lint-1.39.0-linux-amd64.tar.gz"
111+
},
112+
"v1.4": {
113+
"Error": "golangci-lint version 'v1.4' isn't supported: we support only v1.28.3 and later versions"
114+
},
115+
"v1.40": {
116+
"TargetVersion": "v1.40.1",
117+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.40.1/golangci-lint-1.40.1-linux-amd64.tar.gz"
118+
},
119+
"v1.41": {
120+
"TargetVersion": "v1.41.1",
121+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.41.1/golangci-lint-1.41.1-linux-amd64.tar.gz"
122+
},
123+
"v1.42": {
124+
"TargetVersion": "v1.42.1",
125+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.42.1/golangci-lint-1.42.1-linux-amd64.tar.gz"
126+
},
127+
"v1.43": {
128+
"TargetVersion": "v1.43.0",
129+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.43.0/golangci-lint-1.43.0-linux-amd64.tar.gz"
130+
},
131+
"v1.44": {
132+
"TargetVersion": "v1.44.2",
133+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.44.2/golangci-lint-1.44.2-linux-amd64.tar.gz"
134+
},
135+
"v1.45": {
136+
"TargetVersion": "v1.45.2",
137+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.45.2/golangci-lint-1.45.2-linux-amd64.tar.gz"
138+
},
139+
"v1.46": {
140+
"TargetVersion": "v1.46.2",
141+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.46.2/golangci-lint-1.46.2-linux-amd64.tar.gz"
142+
},
143+
"v1.47": {
144+
"TargetVersion": "v1.47.3",
145+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.47.3/golangci-lint-1.47.3-linux-amd64.tar.gz"
146+
},
147+
"v1.48": {
148+
"TargetVersion": "v1.48.0",
149+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.48.0/golangci-lint-1.48.0-linux-amd64.tar.gz"
150+
},
151+
"v1.49": {
152+
"TargetVersion": "v1.49.0",
153+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.49.0/golangci-lint-1.49.0-linux-amd64.tar.gz"
154+
},
155+
"v1.5": {
156+
"Error": "golangci-lint version 'v1.5' isn't supported: we support only v1.28.3 and later versions"
157+
},
158+
"v1.50": {
159+
"TargetVersion": "v1.50.1",
160+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.50.1/golangci-lint-1.50.1-linux-amd64.tar.gz"
161+
},
162+
"v1.51": {
163+
"TargetVersion": "v1.51.2",
164+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.51.2/golangci-lint-1.51.2-linux-amd64.tar.gz"
165+
},
166+
"v1.52": {
167+
"TargetVersion": "v1.52.2",
168+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.52.2/golangci-lint-1.52.2-linux-amd64.tar.gz"
169+
},
170+
"v1.53": {
171+
"TargetVersion": "v1.53.3",
172+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.53.3/golangci-lint-1.53.3-linux-amd64.tar.gz"
173+
},
174+
"v1.54": {
175+
"TargetVersion": "v1.54.2",
176+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.54.2/golangci-lint-1.54.2-linux-amd64.tar.gz"
177+
},
178+
"v1.55": {
179+
"TargetVersion": "v1.55.2",
180+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.55.2/golangci-lint-1.55.2-linux-amd64.tar.gz"
181+
},
182+
"v1.56": {
183+
"TargetVersion": "v1.56.2",
184+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.56.2/golangci-lint-1.56.2-linux-amd64.tar.gz"
185+
},
186+
"v1.57": {
187+
"TargetVersion": "v1.57.2",
188+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.57.2/golangci-lint-1.57.2-linux-amd64.tar.gz"
189+
},
190+
"v1.58": {
191+
"TargetVersion": "v1.58.2",
192+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.58.2/golangci-lint-1.58.2-linux-amd64.tar.gz"
193+
},
194+
"v1.59": {
195+
"TargetVersion": "v1.59.1",
196+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.59.1/golangci-lint-1.59.1-linux-amd64.tar.gz"
197+
},
198+
"v1.6": {
199+
"Error": "golangci-lint version 'v1.6' isn't supported: we support only v1.28.3 and later versions"
200+
},
201+
"v1.60": {
202+
"TargetVersion": "v1.60.3",
203+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.60.3/golangci-lint-1.60.3-linux-amd64.tar.gz"
204+
},
205+
"v1.61": {
206+
"TargetVersion": "v1.61.0",
207+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.61.0/golangci-lint-1.61.0-linux-amd64.tar.gz"
208+
},
209+
"v1.62": {
210+
"TargetVersion": "v1.62.2",
211+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.62.2/golangci-lint-1.62.2-linux-amd64.tar.gz"
212+
},
213+
"v1.63": {
214+
"TargetVersion": "v1.63.4",
215+
"AssetURL": "https://github.com/golangci/golangci-lint/releases/download/v1.63.4/golangci-lint-1.63.4-linux-amd64.tar.gz"
216+
},
217+
"v1.7": {
218+
"Error": "golangci-lint version 'v1.7' isn't supported: we support only v1.28.3 and later versions"
219+
},
220+
"v1.8": {
221+
"Error": "golangci-lint version 'v1.8' isn't supported: we support only v1.28.3 and later versions"
222+
},
223+
"v1.9": {
224+
"Error": "golangci-lint version 'v1.9' isn't supported: we support only v1.28.3 and later versions"
225+
}
226+
}
227+
}

scripts/gen_github_action_config/go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/golangci/golangci-lint/scripts/gen_github_action_config
22

3-
go 1.21.0
3+
go 1.22.0
44

55
require (
66
github.com/shurcooL/githubv4 v0.0.0-20240429030203-be2daab69064

scripts/gen_github_action_config/main.go

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import (
77
"fmt"
88
"log"
99
"os"
10+
"path/filepath"
1011
"strconv"
1112
"strings"
1213

@@ -34,8 +35,21 @@ func run(ctx context.Context) error {
3435

3536
dest := os.Args[1]
3637

38+
ext := filepath.Ext(dest)
39+
3740
// https://github.com/golangci/golangci-lint-action/blob/5421a116d2bf2a1d53595d0dca7da6e18bd1cfd7/src/version.ts#L43-L47
38-
err = generate(allReleases, version{major: 1, minor: 28, patch: 3}, dest)
41+
minAllowedVersionV1 := version{major: 1, minor: 28, patch: 3}
42+
43+
// For compatibility with v1: it should always be related to v1 only.
44+
// TODO(ldez): it should be removed but I don't know when.
45+
err = generate(allReleases, minAllowedVersionV1, dest)
46+
if err != nil {
47+
return fmt.Errorf("failed to generate v1: %w", err)
48+
}
49+
50+
destV1 := filepath.Join(filepath.Dir(dest), strings.TrimSuffix(filepath.Base(dest), ext)+"-v1"+ext)
51+
52+
err = generate(allReleases, minAllowedVersionV1, destV1)
3953
if err != nil {
4054
return fmt.Errorf("failed to generate v1: %w", err)
4155
}
@@ -144,6 +158,14 @@ func buildConfig(releases []release, minAllowedVersion version) (*actionConfig,
144158
latestVersionConfig := versionConfig{}
145159

146160
for minorVersionedStr, maxPatchVersion := range maxPatchReleases {
161+
if minAllowedVersion.major < maxPatchVersion.major {
162+
minorVersionToConfig[minorVersionedStr] = versionConfig{
163+
Error: fmt.Sprintf("golangci-lint version '%s' isn't supported: only v%d versions are supported",
164+
minorVersionedStr, minAllowedVersion.major),
165+
}
166+
continue
167+
}
168+
147169
if !maxPatchVersion.isAfterOrEq(&minAllowedVersion) {
148170
minorVersionToConfig[minorVersionedStr] = versionConfig{
149171
Error: fmt.Sprintf("golangci-lint version '%s' isn't supported: we support only %s and later versions",
@@ -152,8 +174,6 @@ func buildConfig(releases []release, minAllowedVersion version) (*actionConfig,
152174
continue
153175
}
154176

155-
maxPatchVersion := maxPatchVersion
156-
157177
assetURL, err := findLinuxAssetURL(&maxPatchVersion, versionToRelease[maxPatchVersion].ReleaseAssets.Nodes)
158178
if err != nil {
159179
return nil, fmt.Errorf("failed to find linux asset url for release %s: %w", maxPatchVersion, err)

scripts/gen_github_action_config/main_test.go

Lines changed: 33 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,44 @@ import (
1111
)
1212

1313
func Test_buildConfig(t *testing.T) {
14-
allReleases := unmarshalRelease(t, "all-releases.json")
14+
testCases := []struct {
15+
desc string
16+
inputPath string
17+
minVersion version
18+
expected string
19+
}{
20+
{
21+
desc: "v1",
22+
inputPath: "all-releases.json",
23+
minVersion: version{major: 1, minor: 28, patch: 3},
24+
expected: "github-action-config.json",
25+
},
26+
{
27+
desc: "v1 only",
28+
inputPath: "all-releases-v2.json",
29+
minVersion: version{major: 1, minor: 28, patch: 3},
30+
expected: "github-action-config-v1.json",
31+
},
32+
}
1533

16-
minAllowedVersion := version{major: 1, minor: 28, patch: 3}
34+
for _, test := range testCases {
35+
t.Run(test.desc, func(t *testing.T) {
36+
t.Parallel()
1737

18-
config, err := buildConfig(allReleases, minAllowedVersion)
19-
require.NoError(t, err)
38+
allReleases := unmarshalRelease(t, test.inputPath)
2039

21-
data, err := json.MarshalIndent(config, "", " ")
22-
require.NoError(t, err)
40+
config, err := buildConfig(allReleases, test.minVersion)
41+
require.NoError(t, err)
2342

24-
expected, err := os.ReadFile(filepath.Join("testdata", "github-action-config.json"))
25-
require.NoError(t, err)
43+
data, err := json.MarshalIndent(config, "", " ")
44+
require.NoError(t, err)
45+
46+
expected, err := os.ReadFile(filepath.Join("testdata", test.expected))
47+
require.NoError(t, err)
2648

27-
assert.JSONEq(t, string(expected), string(data))
49+
assert.JSONEq(t, string(expected), string(data))
50+
})
51+
}
2852
}
2953

3054
func unmarshalRelease(t *testing.T, filename string) []release {

0 commit comments

Comments
 (0)