1[tools]
2go = "latest"
3"go:golang.org/x/vuln/cmd/govulncheck" = "latest"
4"go:mvdan.cc/gofumpt" = "latest"
5golangci-lint = "latest"
6
7[tasks.build]
8run = "go build -o keld ."
9
10[tasks.install]
11run = "go install ."
12
13[tasks.test]
14run = "go test -v ./..."
15
16[tasks.fmt]
17run = "gofumpt -w ."
18
19[tasks."fmt:check"]
20run = """
21output=$(gofumpt -d .)
22if [ -n "$output" ]; then
23 echo "$output"
24 echo "Files unformatted; execute 'mise run fmt'"
25 exit 1
26fi
27"""
28
29[tasks.fix]
30run = "jj --config 'fix.tools.gofumpt.command=[\"gofumpt\"]' --config 'fix.tools.gofumpt.patterns=[\"glob:**/*.go\"]' fix"
31
32[tasks.lint]
33run = "golangci-lint run"
34
35[tasks.vuln]
36run = "govulncheck ./..."
37
38[tasks.vet]
39run = "go vet ./..."
40
41[tasks."test:quiet"]
42run = """
43output=$(go test ./... 2>&1)
44if [ $? -eq 0 ]; then
45 echo "✓"
46else
47 echo "$output"
48 exit 1
49fi
50"""
51
52[tasks.sync]
53run = "go generate ./internal/restic/..."
54
55[tasks."sync:check"]
56run = """
57tmpdir=$(mktemp -d)
58trap 'rm -rf "$tmpdir"' EXIT
59cp internal/restic/commands_gen.go "$tmpdir/before.go" 2>/dev/null || true
60go generate ./internal/restic/...
61if ! diff -q internal/restic/commands_gen.go "$tmpdir/before.go" >/dev/null 2>&1; then
62 diff -u "$tmpdir/before.go" internal/restic/commands_gen.go || true
63 echo "restic commands out of sync; run 'mise run sync'"
64 exit 1
65fi
66"""
67
68[tasks.check]
69depends = ["fmt", "vet", "lint", "vuln", "build", "test:quiet"]