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.
This commit is contained in:
89
Taskfile.yml
Normal file
89
Taskfile.yml
Normal file
@ -0,0 +1,89 @@
|
||||
# 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}}"
|
||||
Reference in New Issue
Block a user