Files
claude-statusline/Taskfile.yml

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}}"