# Use 'just ' to run tasks build_path := "_build" server_exec_name := "server" simplecli_exec_name := "simplecli" # Default recipe (runs when you just type 'just') default: @just --list build: clean @echo "Building notes..." @mkdir -p {{ build_path }} @just build-server @just build-simplecli build-server: @echo "Building the isolated server..." @rm -f {{ build_path }}/{{ server_exec_name }} go build -o {{ build_path }}/{{ server_exec_name }} -ldflags="-s -w" isolated/server/main.go build-simplecli: @echo "Building the simple cli..." @rm -f {{ build_path }}/{{ simplecli_exec_name }} go build -o {{ build_path }}/{{ simplecli_exec_name }} -ldflags="-s -w" isolated/simplecli/main.go # Run tests with short output test: @echo "Running tests..." go test --short ./... @echo "Tests complete" # Run tests with coverage test-coverage: @echo "Running tests with coverage..." @mkdir -p {{ build_path }} @rm -f {{ build_path }}/coverage.out go test -v -coverprofile={{ build_path }}/coverage.out ./... @echo "Generate HTML report" go tool cover -html={{ build_path }}/coverage.out -o {{ build_path }}/coverage.html @echo "Coverage report generated: {{ build_path }}/coverage.html" # Watch for changes and run tests automatically watch: @echo "Watching for changes..." @command -v watchexec >/dev/null 2>&1 || (echo "Error: watchexec not installed. Install with: brew install watchexec" && exit 1) @watchexec --clear --exts go -- sh -c 'echo "Changes detected, running tests..." && just test' # Clean build artifacts clean: @echo "Cleaning build artifacts..." rm -rf {{ build_path }} @echo "Clean complete"