Skip to content

Commit 1ca6e23

Browse files
authored
Merge pull request #1802 from cpunion/check-goreleaser
Check goreleaser file lists
2 parents f39646c + cdc9e08 commit 1ca6e23

File tree

5 files changed

+172
-64
lines changed

5 files changed

+172
-64
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import os
2+
import subprocess
3+
import yaml
4+
5+
files = [f for f in os.listdir('.') if not f.startswith(
6+
".") and f not in ["VERSION"]]
7+
files.sort()
8+
# filter out the files that are ignored by git
9+
files = [f for f in files if subprocess.call(
10+
["git", "ls-files", "--error-unmatch", f],
11+
stdout=subprocess.DEVNULL,
12+
stderr=subprocess.DEVNULL) == 0]
13+
14+
gorel = yaml.load(open(".goreleaser.yaml", "r"), Loader=yaml.FullLoader)
15+
scfiles = [f["source"] for f in gorel["snapcrafts"][0]["extra_files"]]
16+
scfiles.sort()
17+
18+
failed = False
19+
20+
if files != scfiles:
21+
failed = True
22+
print("Files in snapcraft are different from the ones in the repo")
23+
print("Update .goreleaser.yaml in the snapcraft section:")
24+
for f in files:
25+
print(f" - source: \"{f}\"")
26+
print(f" destination: \"{f}\"")
27+
28+
nfpms_files = [f["src"]
29+
for f in gorel["nfpms"][0]["contents"] if f.get("type") != "symlink"]
30+
nfpms_files.sort()
31+
32+
if files != nfpms_files:
33+
failed = True
34+
print("Files in nfpms are different from the ones in the repo")
35+
print("Update .goreleaser.yaml in the nfpms section:")
36+
for f in files:
37+
print(f" - src: \"{f}\"")
38+
print(f" dst: \"/usr/lib/{{{{ .ProjectName }}}}/{f}\"")
39+
40+
if failed:
41+
exit(1)
42+
43+
print(".goreleaser checks passed")

.github/workflows/go.yml

+9
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,15 @@ on:
77
branches: [ main ]
88

99
jobs:
10+
Check:
11+
runs-on: ubuntu-latest
12+
steps:
13+
- uses: actions/checkout@v4
14+
- name: Check goreleaser files
15+
run: |
16+
pip install --no-input pyyaml
17+
python .github/workflows/check_goreleaser_config.py
18+
1019
Test:
1120
strategy:
1221
matrix:

.github/workflows/release-build.yml

+6-1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,11 @@ jobs:
1212
- uses: actions/checkout@v4
1313
with:
1414
fetch-depth: 0
15+
16+
- name: Check goreleaser files
17+
run: |
18+
pip install --no-input pyyaml
19+
python .github/workflows/check_goreleaser_config.py
1520
1621
- name: Install Snapcraft
1722
uses: samuelmeuli/action-snapcraft@v2
@@ -64,7 +69,7 @@ jobs:
6469
- name: Upload deb/rpm to Fury.io
6570
if: env.IS_PRERELEASE != 'true'
6671
run: |
67-
for file in dist/*.{deb,rpm}
72+
for file in .dist/*.{deb,rpm}
6873
do
6974
echo "Uploading $file to Fury.io"
7075
CODE=`curl --write-out '%{http_code}' --output /dev/null -sS -F package=@$file https://$FURY_TOKEN@push.fury.io/$GITHUB_REPOSITORY_OWNER/`

.gitignore

+1-1
Original file line numberDiff line numberDiff line change
@@ -50,4 +50,4 @@ bin/
5050
go-num/
5151
_todo*.go
5252

53-
dist/
53+
.dist/

.goreleaser.yaml

+113-62
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
55

66
version: 1
7+
dist: ".dist"
78

89
before:
910
hooks:
@@ -146,42 +147,66 @@ nfpms:
146147
bindir: /usr/lib/{{ .ProjectName }}
147148
contents:
148149
# source folder
149-
- src: LICENSE
150-
dst: /usr/lib/{{ .ProjectName }}/LICENSE
150+
- src: "LICENSE"
151+
dst: "/usr/lib/{{ .ProjectName }}/LICENSE"
152+
- src: "Makefile"
153+
dst: "/usr/lib/{{ .ProjectName }}/Makefile"
151154
- src: "README.md"
152-
dst: /usr/lib/{{ .ProjectName }}/README.md
155+
dst: "/usr/lib/{{ .ProjectName }}/README.md"
156+
- src: "_gendeps.go"
157+
dst: "/usr/lib/{{ .ProjectName }}/_gendeps.go"
158+
- src: "all.bash"
159+
dst: "/usr/lib/{{ .ProjectName }}/all.bash"
160+
- src: "all.bat"
161+
dst: "/usr/lib/{{ .ProjectName }}/all.bat"
162+
- src: "ast"
163+
dst: "/usr/lib/{{ .ProjectName }}/ast"
164+
- src: "build_install_run.go"
165+
dst: "/usr/lib/{{ .ProjectName }}/build_install_run.go"
166+
- src: "builtin"
167+
dst: "/usr/lib/{{ .ProjectName }}/builtin"
168+
- src: "cl"
169+
dst: "/usr/lib/{{ .ProjectName }}/cl"
170+
- src: "cmd"
171+
dst: "/usr/lib/{{ .ProjectName }}/cmd"
172+
- src: "doc"
173+
dst: "/usr/lib/{{ .ProjectName }}/doc"
174+
- src: "env"
175+
dst: "/usr/lib/{{ .ProjectName }}/env"
176+
- src: "format"
177+
dst: "/usr/lib/{{ .ProjectName }}/format"
178+
- src: "gengo.go"
179+
dst: "/usr/lib/{{ .ProjectName }}/gengo.go"
153180
- src: "go.mod"
154-
dst: /usr/lib/{{ .ProjectName }}/go.mod
181+
dst: "/usr/lib/{{ .ProjectName }}/go.mod"
155182
- src: "go.sum"
156-
dst: /usr/lib/{{ .ProjectName }}/go.sum
157-
- src: "*.go"
158-
dst: /usr/lib/{{ .ProjectName }}/
159-
- src: ast
160-
dst: /usr/lib/{{ .ProjectName }}/ast
161-
- src: builtin
162-
dst: /usr/lib/{{ .ProjectName }}/builtin
163-
- src: cl
164-
dst: /usr/lib/{{ .ProjectName }}/cl
165-
- src: cmd
166-
dst: /usr/lib/{{ .ProjectName }}/cmd
167-
- src: doc
168-
dst: /usr/lib/{{ .ProjectName }}/doc
169-
- src: env
170-
dst: /usr/lib/{{ .ProjectName }}/env
171-
- src: format
172-
dst: /usr/lib/{{ .ProjectName }}/format
173-
- src: parser
174-
dst: /usr/lib/{{ .ProjectName }}/parser
175-
- src: printer
176-
dst: /usr/lib/{{ .ProjectName }}/parser
177-
- src: scanner
178-
dst: /usr/lib/{{ .ProjectName }}/scanner
179-
- src: token
180-
dst: /usr/lib/{{ .ProjectName }}/token
181-
- src: watcher
182-
dst: /usr/lib/{{ .ProjectName }}/watcher
183+
dst: "/usr/lib/{{ .ProjectName }}/go.sum"
184+
- src: "imp.go"
185+
dst: "/usr/lib/{{ .ProjectName }}/imp.go"
186+
- src: "load.go"
187+
dst: "/usr/lib/{{ .ProjectName }}/load.go"
188+
- src: "make.bash"
189+
dst: "/usr/lib/{{ .ProjectName }}/make.bash"
190+
- src: "make.bat"
191+
dst: "/usr/lib/{{ .ProjectName }}/make.bat"
192+
- src: "outline.go"
193+
dst: "/usr/lib/{{ .ProjectName }}/outline.go"
194+
- src: "parser"
195+
dst: "/usr/lib/{{ .ProjectName }}/parser"
196+
- src: "printer"
197+
dst: "/usr/lib/{{ .ProjectName }}/printer"
198+
- src: "scanner"
199+
dst: "/usr/lib/{{ .ProjectName }}/scanner"
200+
- src: "test"
201+
dst: "/usr/lib/{{ .ProjectName }}/test"
202+
- src: "testdata"
203+
dst: "/usr/lib/{{ .ProjectName }}/testdata"
204+
- src: "tidy.go"
205+
dst: "/usr/lib/{{ .ProjectName }}/tidy.go"
206+
- src: "token"
207+
dst: "/usr/lib/{{ .ProjectName }}/token"
183208
- src: "x"
184-
dst: /usr/lib/{{ .ProjectName }}/x
209+
dst: "/usr/lib/{{ .ProjectName }}/x"
185210
# symlinks to binaries
186211
- src: "/usr/lib/{{ .ProjectName }}/bin/gop"
187212
dst: /usr/bin/gop
@@ -211,40 +236,66 @@ snapcrafts:
211236
{{- if .Arm }}v{{ .Arm }}{{ end }}
212237
extra_files:
213238
# source folder
214-
- source: LICENSE
215-
destination: LICENSE
239+
- source: "LICENSE"
240+
destination: "LICENSE"
241+
- source: "Makefile"
242+
destination: "Makefile"
216243
- source: "README.md"
217-
destination: README.md
244+
destination: "README.md"
245+
- source: "_gendeps.go"
246+
destination: "_gendeps.go"
247+
- source: "all.bash"
248+
destination: "all.bash"
249+
- source: "all.bat"
250+
destination: "all.bat"
251+
- source: "ast"
252+
destination: "ast"
253+
- source: "build_install_run.go"
254+
destination: "build_install_run.go"
255+
- source: "builtin"
256+
destination: "builtin"
257+
- source: "cl"
258+
destination: "cl"
259+
- source: "cmd"
260+
destination: "cmd"
261+
- source: "doc"
262+
destination: "doc"
263+
- source: "env"
264+
destination: "env"
265+
- source: "format"
266+
destination: "format"
267+
- source: "gengo.go"
268+
destination: "gengo.go"
218269
- source: "go.mod"
219-
destination: go.mod
270+
destination: "go.mod"
220271
- source: "go.sum"
221-
destination: go.sum
222-
- source: ast
223-
destination: ast
224-
- source: builtin
225-
destination: builtin
226-
- source: cl
227-
destination: cl
228-
- source: cmd
229-
destination: cmd
230-
- source: doc
231-
destination: doc
232-
- source: env
233-
destination: env
234-
- source: format
235-
destination: format
236-
- source: parser
237-
destination: parser
238-
- source: printer
239-
destination: parser
240-
- source: scanner
241-
destination: scanner
242-
- source: token
243-
destination: token
244-
- source: watcher
245-
destination: watcher
272+
destination: "go.sum"
273+
- source: "imp.go"
274+
destination: "imp.go"
275+
- source: "load.go"
276+
destination: "load.go"
277+
- source: "make.bash"
278+
destination: "make.bash"
279+
- source: "make.bat"
280+
destination: "make.bat"
281+
- source: "outline.go"
282+
destination: "outline.go"
283+
- source: "parser"
284+
destination: "parser"
285+
- source: "printer"
286+
destination: "printer"
287+
- source: "scanner"
288+
destination: "scanner"
289+
- source: "test"
290+
destination: "test"
291+
- source: "testdata"
292+
destination: "testdata"
293+
- source: "tidy.go"
294+
destination: "tidy.go"
295+
- source: "token"
296+
destination: "token"
246297
- source: "x"
247-
destination: x
298+
destination: "x"
248299
apps:
249300
gop:
250301
command: "gop"

0 commit comments

Comments
 (0)