Files
claude-statusline/Taskfile.yml
Kaj Kowalski 1cca87af90 Use gopsutil for cross-platform process detection
Replace pgrep with gopsutil/v4 for pure Go process detection.
Now fully cross-platform (Linux, FreeBSD, macOS, Windows) with
zero external exec calls. Add Taskfile and test fixture.
2025-12-18 06:36:56 +01:00

90 lines
1.9 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 {{.BINARY}} .
sources:
- "*.go"
- go.mod
- go.sum
generates:
- "{{.BINARY}}"
build:debug:
desc: Build with debug symbols
cmds:
- go build -o {{.BINARY}} .
run:
desc: Run with test fixture
deps: [build]
cmds:
- cat test/fixture.json | ./{{.BINARY}}
test:
desc: Run with test fixture and show output
deps: [build]
cmds:
- echo "=== Output ==="
- cat test/fixture.json | ./{{.BINARY}}
- echo ""
- echo "=== Timing (single run) ==="
- time sh -c 'cat test/fixture.json | ./{{.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 | ./{{.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 | ./{{.BINARY}} >/dev/null; done
tidy:
desc: Run go mod tidy
cmds:
- go mod tidy
clean:
desc: Remove built binary
cmds:
- rm -f {{.BINARY}}
size:
desc: Show binary size
deps: [build]
cmds:
- ls -lh {{.BINARY}}
install:
desc: Install to ~/.claude/
deps: [build]
cmds:
- mkdir -p ~/.claude
- cp {{.BINARY}} ~/.claude/{{.BINARY}}
- echo "Installed to ~/.claude/{{.BINARY}}"