-
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTaskfile.yml
More file actions
253 lines (209 loc) · 5.85 KB
/
Taskfile.yml
File metadata and controls
253 lines (209 loc) · 5.85 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
# Taskfile for Phoenix TUI Framework
# Install Task: https://taskfile.dev/installation/
# Usage: task <task-name>
# Example: task test, task lint, task bench
version: '3'
vars:
# Coverage threshold (fail if below)
COVERAGE_THRESHOLD: 90
# Linter timeout
LINT_TIMEOUT: 5m
tasks:
# Default task (runs when you type just "task")
default:
desc: Show available tasks
cmds:
- task --list
# ========================================
# Testing
# ========================================
test:
desc: Run all tests with coverage
cmds:
- go test -v -cover ./...
test:race:
desc: Run all tests with race detector (requires CGO)
cmds:
- go test -v -race -cover ./...
test:core:
desc: Run core package tests with coverage
dir: core
cmds:
- go test -v -coverprofile=coverage.out ./...
- go tool cover -func=coverage.out
test:coverage:
desc: Run tests and generate HTML coverage report
cmds:
- go test -v -coverprofile=coverage.out ./...
- go tool cover -html=coverage.out -o coverage.html
- cmd: echo "Coverage report generated at coverage.html"
silent: true
test:watch:
desc: Run tests in watch mode (requires entr or fswatch)
cmds:
- |
find . -name "*.go" | entr -c go test -v ./...
# ========================================
# Linting & Code Quality
# ========================================
lint:
desc: Run golangci-lint on all packages
cmds:
- golangci-lint run --config .golangci.yml --timeout={{.LINT_TIMEOUT}} ./...
lint:core:
desc: Run golangci-lint on core package only
cmds:
- golangci-lint run --config .golangci.yml ./core/...
lint:fix:
desc: Run golangci-lint and auto-fix issues
cmds:
- golangci-lint run --config .golangci.yml --fix ./...
fmt:
desc: Format all Go code with gofmt
cmds:
- go fmt ./...
vet:
desc: Run go vet on all packages
cmds:
- go vet ./...
check:
desc: Run all quality checks (fmt, vet, lint, test)
cmds:
- task: fmt
- task: vet
- task: lint
- task: test
# ========================================
# Building
# ========================================
build:
desc: Build all packages
cmds:
- go build ./...
build:examples:
desc: Build all example applications
cmds:
- go build -o bin/basic.exe ./examples/basic
- go build -o bin/unicode.exe ./examples/unicode
- cmd: echo "Examples built in bin/"
silent: true
# ========================================
# Dependencies
# ========================================
deps:
desc: Download and tidy all dependencies
cmds:
- go mod download
- go mod tidy
deps:update:
desc: Update all dependencies to latest
cmds:
- go get -u ./...
- go mod tidy
deps:verify:
desc: Verify dependencies haven't been modified
cmds:
- go mod verify
# ========================================
# Benchmarking (Week 4 Day 5-6)
# ========================================
bench:
desc: Run all benchmarks
cmds:
- go test -bench=. -benchmem ./...
bench:core:
desc: Run core package benchmarks
dir: core
cmds:
- go test -bench=. -benchmem ./...
bench:unicode:
desc: Run Unicode benchmarks with detailed stats
dir: core/domain/service
cmds:
- go test -bench=BenchmarkUnicode -benchmem -benchtime=5s .
bench:compare:
desc: Run benchmarks and compare with previous results
cmds:
- go test -bench=. -benchmem ./... | tee bench-new.txt
- cmd: echo "Compare with 'benchstat bench-old.txt bench-new.txt'"
silent: true
# ========================================
# Cleaning
# ========================================
clean:
desc: Remove build artifacts and coverage files
cmds:
- cmd: echo "Cleaning build artifacts..."
silent: true
- rm -f coverage.out coverage.html
- rm -f **/*.test
- rm -f **/*.coverprofile
- rm -f bench-*.txt
- rm -rf bin/
- cmd: echo "Clean complete!"
silent: true
# ========================================
# Development Helpers
# ========================================
dev:
desc: Run development checks before commit
cmds:
- task: fmt
- task: vet
- task: lint:fix
- task: test
- cmd: echo "✅ All checks passed! Ready to commit."
silent: true
ci:
desc: Run CI checks (same as GitHub Actions)
cmds:
- task: fmt
- task: vet
- task: lint
- task: test:coverage
- task: build
# ========================================
# Examples
# ========================================
run:basic:
desc: Run basic example
dir: examples/basic
cmds:
- go run main.go
run:unicode:
desc: Run Unicode example
dir: examples/unicode
cmds:
- go run main.go
# ========================================
# Release (for future use)
# ========================================
release:check:
desc: Check if ready for release
cmds:
- task: ci
- go mod verify
- cmd: echo "✅ Ready for release!"
silent: true
# ========================================
# Documentation
# ========================================
docs:serve:
desc: Serve documentation locally (if using godoc)
cmds:
- godoc -http=:6060
- cmd: echo "Documentation at http://localhost:6060/pkg/github.com/phoenix-tui/phoenix/"
silent: true
# ========================================
# Workspace Management
# ========================================
workspace:sync:
desc: Sync workspace dependencies
cmds:
- go work sync
- cmd: echo "Workspace synced!"
silent: true
workspace:check:
desc: Check workspace status
cmds:
- go work edit -print