_default: @just --list # Install dependencies (Go modules) install: go mod download # Run from source (development) run: go run ./cmd/goget # Build the binary build: # Keep the embedded manpage in sync with man/goget.1. //go:embed # cannot reference files outside the embedding package, so we copy # the source-of-truth manpage into the package tree before compiling. cp man/goget.1 cmd/goget/man-page-data/goget.1 go vet ./... gofmt -l $(find cmd internal pkg -name '*.go') | grep . && exit 1 || true go build -ldflags "-s -w" -o bin/goget ./cmd/goget # Run tests (race detector + fuzz seed corpus) test: go test -race -count=1 ./... # Remove build artifacts uninstall: rm -rf bin/ coverage.out # Validate the manpage with groff (zero warnings on success). Requires # `groff` to be installed — skipped silently otherwise. man: @command -v groff >/dev/null || { echo "groff not installed, skipping"; exit 0; } groff -man -ww -Kutf-8 -z man/goget.1 # Install the manpage to ~/.local/share/man/man1/ (XDG rootless). # After install, `man goget` resolves it automatically. Re-run safely to # pick up edits. install-man: man @mkdir -p "$HOME/.local/share/man/man1" gzip -c -f man/goget.1 > "$HOME/.local/share/man/man1/goget.1.gz" @echo "Installed: $HOME/.local/share/man/man1/goget.1.gz" # Remove the manpage installed by `just install-man`. uninstall-man: rm -f "$HOME/.local/share/man/man1/goget.1.gz" @echo "Removed: $HOME/.local/share/man/man1/goget.1.gz"