-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yaml
More file actions
94 lines (81 loc) · 2.14 KB
/
Taskfile.yaml
File metadata and controls
94 lines (81 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
version: '3'
vars:
BINARY_NAME: macsetup
tasks:
default:
cmds:
- task: build
build:
desc: Build the binary
vars:
VERSION:
sh: git describe --tags --always --dirty 2>/dev/null || echo dev
LDFLAGS: '-ldflags "-s -w -X main.version={{.VERSION}}"'
cmds:
- go build {{.LDFLAGS}} -o bin/{{.BINARY_NAME}} .
sources:
- ./**/*.go
generates:
- bin/{{.BINARY_NAME}}
run:
desc: Run the application
cmds:
- go run . -- {{.CLI_ARGS}}
gen-packages:
desc: Generate docs/packages.md from internal/config/packages.go
cmds:
- go run ./scripts/gen-packages-md.go > docs/packages.md
clean:
desc: Clean build artifacts
cmds:
- rm -rf bin/ dist/
test:
desc: Run tests
cmds:
- go test ./...
format:
desc: Format code with gofumpt
cmds:
- gofumpt -l -w .
lint:
desc: Run linter with golangci-lint
deps:
- format
cmds:
- golangci-lint run
check:
desc: Run format and lint
deps:
- format
- lint
ci:
desc: CI checks (format check + lint + test)
cmds:
- |
if [ -n "$(gofumpt -l .)" ]; then
echo "Code is not formatted. Run 'task format' to fix."
gofumpt -l .
exit 1
fi
- golangci-lint run
- go test ./...
build-release:
desc: Build release binary for Apple Silicon
vars:
VERSION:
sh: git describe --tags --always --dirty 2>/dev/null || echo dev
LDFLAGS: '-ldflags "-s -w -X main.version={{.VERSION}}"'
cmds:
- go build {{.LDFLAGS}} -o bin/{{.BINARY_NAME}}-darwin-arm64 .
- echo "Built bin/{{.BINARY_NAME}}-darwin-arm64 with version {{.VERSION}}"
release:
desc: Create and publish a new release (usage - task release VERSION=v0.0.2)
vars:
VERSION: '{{.VERSION | default ""}}'
preconditions:
- sh: '[ -n "{{.VERSION}}" ]'
msg: 'VERSION is required. Usage - task release VERSION=v0.0.2'
- sh: command -v gh >/dev/null 2>&1
msg: 'GitHub CLI (gh) is required. Install with - brew install gh'
cmds:
- ./scripts/release.sh {{.VERSION}}