120 lines
2.6 KiB
YAML
120 lines
2.6 KiB
YAML
# https://taskfile.dev
|
|
|
|
version: "3"
|
|
|
|
vars:
|
|
BINARY: statusline
|
|
LDFLAGS: -s -w
|
|
|
|
tasks:
|
|
default:
|
|
desc: Build the statusline binary
|
|
cmds:
|
|
- task: build
|
|
|
|
build:
|
|
desc: Build with stripped symbols
|
|
cmds:
|
|
- go build -ldflags="{{.LDFLAGS}}" -o bin/{{.BINARY}} .
|
|
sources:
|
|
- "*.go"
|
|
- go.mod
|
|
- go.sum
|
|
generates:
|
|
- "bin/{{.BINARY}}"
|
|
|
|
build:debug:
|
|
desc: Build with debug symbols
|
|
cmds:
|
|
- go build -o bin/{{.BINARY}} .
|
|
|
|
run:
|
|
desc: Run with test fixture
|
|
deps: [build]
|
|
cmds:
|
|
- cat test/fixture.json | ./bin/{{.BINARY}}
|
|
|
|
test:
|
|
desc: Run Go unit tests
|
|
cmds:
|
|
- go test -v ./...
|
|
|
|
test:cover:
|
|
desc: Run tests with coverage
|
|
cmds:
|
|
- go test -cover ./...
|
|
|
|
test:fixture:
|
|
desc: Run with test fixture and show output
|
|
deps: [build]
|
|
cmds:
|
|
- echo "=== Output ==="
|
|
- cat test/fixture.json | ./bin/{{.BINARY}}
|
|
- echo ""
|
|
- echo "=== Timing (single run) ==="
|
|
- time sh -c 'cat test/fixture.json | ./bin/{{.BINARY}} > /dev/null'
|
|
|
|
bench:
|
|
desc: Benchmark Go vs Shell (100 runs)
|
|
deps: [build]
|
|
cmds:
|
|
- |
|
|
echo "=== Pure Go (100 runs) ==="
|
|
time for i in $(seq 1 100); do cat test/fixture.json | ./bin/{{.BINARY}} >/dev/null; done
|
|
# echo ""
|
|
# echo "=== Shell (100 runs) ==="
|
|
# time for i in $(seq 1 100); do cat test/fixture.json | ./statusline.sh >/dev/null; done
|
|
silent: false
|
|
|
|
bench:go:
|
|
desc: Benchmark Go only (100 runs)
|
|
deps: [build]
|
|
cmds:
|
|
- |
|
|
echo "=== Pure Go (100 runs) ==="
|
|
time for i in $(seq 1 100); do cat test/fixture.json | ./bin/{{.BINARY}} >/dev/null; done
|
|
|
|
tidy:
|
|
desc: Run go mod tidy
|
|
cmds:
|
|
- go mod tidy
|
|
|
|
lint:
|
|
desc: Run golangci-lint
|
|
cmds:
|
|
- golangci-lint run
|
|
|
|
lint:fix:
|
|
desc: Run golangci-lint with auto-fix
|
|
cmds:
|
|
- golangci-lint run --fix
|
|
|
|
modernize:
|
|
desc: Apply gopls modernize fixes
|
|
cmds:
|
|
- go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix ./...
|
|
|
|
modernize:test:
|
|
desc: Apply gopls modernize fixes including tests
|
|
cmds:
|
|
- go run golang.org/x/tools/gopls/internal/analysis/modernize/cmd/modernize@latest -fix -test ./...
|
|
|
|
clean:
|
|
desc: Remove built binary
|
|
cmds:
|
|
- rm -rf bin/
|
|
|
|
size:
|
|
desc: Show binary size
|
|
deps: [build]
|
|
cmds:
|
|
- ls -lh bin/{{.BINARY}}
|
|
|
|
install:
|
|
desc: Install to ~/.claude/
|
|
deps: [build]
|
|
cmds:
|
|
- mkdir -p ~/.claude
|
|
- cp bin/{{.BINARY}} ~/.claude/{{.BINARY}}
|
|
- echo "Installed to ~/.claude/{{.BINARY}}"
|