.PHONY: build build-web run run-manager run-runner cleanup cleanup-manager cleanup-runner clean-bin clean-web test help install # Build the jiggablend binary (includes embedded web UI) build: @echo "Building with GoReleaser..." goreleaser build --clean --snapshot --single-target @mkdir -p bin @find dist -name jiggablend -type f -exec cp {} bin/jiggablend \; # Build web UI build-web: clean-web cd web && npm install && npm run build # Cleanup manager logs cleanup-manager: @echo "Cleaning up manager logs..." @rm -rf logs/manager.log 2>/dev/null || true @echo "Manager cleanup complete" # Cleanup runner logs cleanup-runner: @echo "Cleaning up runner logs..." @rm -rf logs/runner*.log 2>/dev/null || true @echo "Runner cleanup complete" # Cleanup both manager and runner logs cleanup: cleanup-manager cleanup-runner # Run manager and runner in parallel (for testing) run: cleanup build init-test @echo "Starting manager and runner in parallel..." @echo "Press Ctrl+C to stop both..." @trap 'kill $$MANAGER_PID $$RUNNER_PID 2>/dev/null; exit' INT TERM; \ bin/jiggablend manager -l manager.log & \ MANAGER_PID=$$!; \ sleep 2; \ bin/jiggablend runner -l runner.log --api-key=jk_r0_test_key_123456789012345678901234567890 & \ RUNNER_PID=$$!; \ wait $$MANAGER_PID $$RUNNER_PID # Run manager server run-manager: cleanup-manager build init-test bin/jiggablend manager -l manager.log # Run runner run-runner: cleanup-runner build bin/jiggablend runner -l runner.log --api-key=jk_r0_test_key_123456789012345678901234567890 # Initialize for testing (first run setup) init-test: build @echo "Initializing test configuration..." bin/jiggablend manager config enable localauth bin/jiggablend manager config set fixed-apikey jk_r0_test_key_123456789012345678901234567890 -f -y bin/jiggablend manager config add user test@example.com testpassword --admin -f -y @echo "Test configuration complete!" @echo "fixed api key: jk_r0_test_key_123456789012345678901234567890" @echo "test user: test@example.com" @echo "test password: testpassword" # Clean bin build artifacts clean-bin: rm -rf bin/ # Clean web build artifacts clean-web: rm -rf web/dist/ # Run tests test: go test ./... -timeout 30s # Show help help: @echo "Jiggablend Build and Run Makefile" @echo "" @echo "Build targets:" @echo " build - Build jiggablend binary with embedded web UI" @echo " build-web - Build web UI only" @echo "" @echo "Run targets:" @echo " run - Run manager and runner in parallel (for testing)" @echo " run-manager - Run manager server" @echo " run-runner - Run runner with test API key" @echo " init-test - Initialize test configuration (run once)" @echo "" @echo "Cleanup targets:" @echo " cleanup - Clean all logs" @echo " cleanup-manager - Clean manager logs" @echo " cleanup-runner - Clean runner logs" @echo "" @echo "Other targets:" @echo " clean-bin - Clean build artifacts" @echo " clean-web - Clean web build artifacts" @echo " test - Run Go tests" @echo " help - Show this help" @echo "" @echo "CLI Usage:" @echo " jiggablend manager serve - Start the manager server" @echo " jiggablend runner - Start a runner" @echo " jiggablend manager config show - Show configuration" @echo " jiggablend manager config enable localauth" @echo " jiggablend manager config add user --email=x --password=y" @echo " jiggablend manager config add apikey --name=mykey" @echo " jiggablend manager config set fixed-apikey " @echo " jiggablend manager config list users" @echo " jiggablend manager config list apikeys"