# ctask developer task runner
# Requires: Go 1.26+, PowerShell 7+ (for install/uninstall)
# Install just: winget install Casey.Just

# Default: show available targets
default:
    @just --list

# Compile ctask from the local repo
build:
    go build -o ctask.exe .

# Cross-compile a Linux amd64 binary into dist/. CGO_ENABLED=0 forces a
# pure-Go static link so the binary works in minimal containers (Alpine,
# distroless, scratch). Without this, native Linux builds default to
# CGO_ENABLED=1 and link against the host glibc.
build-linux:
    mkdir -p dist
    CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o dist/ctask-linux-amd64 ./

# Cross-compile a Windows amd64 binary into dist/. CGO_ENABLED=0 keeps
# the artifact pure Go, matching the spec's "no cgo" rule.
build-windows:
    mkdir -p dist
    CGO_ENABLED=0 GOOS=windows GOARCH=amd64 go build -o dist/ctask-windows-amd64.exe ./

# Build both Windows and Linux artifacts into dist/
build-all: build-windows build-linux

# Run the full test suite
test:
    go test ./... -v -count=1

# Install ctask to %LOCALAPPDATA%\ctask\bin (Windows, PowerShell)
install:
    powershell -NoProfile -ExecutionPolicy Bypass -File scripts/install.ps1

# Uninstall ctask from %LOCALAPPDATA%\ctask\bin (Windows, PowerShell)
uninstall:
    powershell -NoProfile -ExecutionPolicy Bypass -File scripts/uninstall.ps1
