1# SPDX-FileCopyrightText: Amolith <amolith@secluded.site>
2#
3# SPDX-License-Identifier: CC0-1.0
4
5version: "3"
6
7vars:
8 VERSION:
9 sh: git describe --tags --always 2>/dev/null || echo "v0.0.0"
10 GOOS:
11 sh: go env GOOS
12 GOARCH:
13 sh: go env GOARCH
14
15env:
16 CGO_ENABLED: 0
17
18tasks:
19 default:
20 desc: Run all checks
21 cmds:
22 - task: fmt
23 - task: lint
24 - task: staticcheck
25 - task: test
26 - task: vuln
27 - task: reuse
28
29 fmt:
30 cmds:
31 - go install mvdan.cc/gofumpt@latest
32 - gofumpt -l -w .
33
34 lint:
35 cmds:
36 - golangci-lint run
37
38 staticcheck:
39 cmds:
40 - go install honnef.co/go/tools/cmd/staticcheck@latest
41 - staticcheck ./...
42
43 test:
44 cmds:
45 - go test -v ./...
46
47 vuln:
48 cmds:
49 - go install golang.org/x/vuln/cmd/govulncheck@latest
50 - govulncheck ./...
51
52 reuse:
53 desc: Lint licenses and copyright headers
54 cmds:
55 - reuse lint
56
57 build:
58 cmds:
59 - go build -o git-format -ldflags "-s -w -X main.version={{.VERSION}}"
60 generates:
61 - git-format
62
63 install:
64 cmds:
65 - go install -ldflags "-s -w -X main.version={{.VERSION}}"
66
67 run:
68 cmds:
69 - go run -ldflags "-s -w -X main.version={{.VERSION}}" . {{.CLI_ARGS}}
70
71 pack:
72 desc: Pack git-format with UPX
73 cmds:
74 - upx --best -qo git-format.min git-format
75 - mv git-format.min git-format
76 sources:
77 - git-format
78
79 clean:
80 desc: Remove build artifacts
81 cmds:
82 - rm -rf git-format dist/
83
84 clean-all:
85 desc: Remove build artifacts and config.toml
86 cmds:
87 - rm -rf git-format config.toml
88
89 release:
90 desc: Interactive release workflow (tag, build, pack, upload)
91 cmds:
92 - ./release.fish
93
94 release:build:
95 desc: Cross-compile and pack for all release targets (no tag/push)
96 cmds:
97 - ./release.fish --from build