Taskfile.yaml

 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