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: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