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:fix
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 lint:fix:
39 cmds:
40 - golangci-lint run --fix
41
42 staticcheck:
43 cmds:
44 - go install honnef.co/go/tools/cmd/staticcheck@latest
45 - staticcheck ./...
46
47 test:
48 cmds:
49 - go test -v ./...
50
51 vuln:
52 cmds:
53 - go install golang.org/x/vuln/cmd/govulncheck@latest
54 - govulncheck ./...
55
56 reuse:
57 desc: Lint licenses and copyright headers
58 cmds:
59 - reuse lint
60
61 build:
62 cmds:
63 - go build -o lune -ldflags "-s -w -X main.version={{.VERSION}}"
64 generates:
65 - lune
66
67 install:
68 cmds:
69 - go install -ldflags "-s -w -X main.version={{.VERSION}}"
70
71 run:
72 cmds:
73 - go run -ldflags "-s -w -X main.version={{.VERSION}}" . {{.CLI_ARGS}}
74
75 pack:
76 desc: Pack lune with UPX
77 cmds:
78 - upx --best -qo lune.min lune
79 - mv lune.min lune
80 sources:
81 - lune
82
83 clean:
84 desc: Remove build artifacts
85 cmds:
86 - rm -rf lune dist/
87
88 clean-all:
89 desc: Remove build artifacts and config.toml
90 cmds:
91 - rm -rf lune config.toml
92
93 release:
94 desc: Interactive release workflow (tag, build, pack, upload)
95 cmds:
96 - ./release.fish