# Nightclub Arcadia — common commands. # # Everything here is documented in CLAUDE.md; this file exists so the exact # invocations live in one place instead of being retyped from memory. UNITY_CLI ?= /Users/lennart/.unity/bin/unity UNITY ?= /Applications/Unity/Hub/Editor/6000.5.8f1/Unity.app/Contents/MacOS/Unity PROJECT ?= $(CURDIR)/NightclubArcadia RESULTS ?= $(CURDIR)/.test-results SMARTMERGE ?= /Applications/Unity/Hub/Editor/6000.5.8f1/Unity.app/Contents/Helpers/UnityYAMLMerge .DEFAULT_GOAL := help .PHONY: help check yarn yarn-play voices voices-sync test test-play build lock clean-results merge-driver help: ## Show this help @grep -hE '^[a-z-]+:.*?## ' $(MAKEFILE_LIST) \ | awk 'BEGIN {FS = ":.*?## "} {printf " \033[36m%-14s\033[0m %s\n", $$1, $$2}' @echo "" @echo " Unity must be CLOSED for test/build — run 'make lock' to check." check: yarn voices test test-play ## Everything a change should pass before commit yarn: ## Compile every Yarn script (seconds, no Unity) @cd tools/YarnCheck && DOTNET_CLI_TELEMETRY_OPTOUT=1 dotnet run -- ../../NightclubArcadia/Assets/Dialogue yarn-play: ## Play a node: make yarn-play NODE=Bartender_Talk PICKS="2 2 0 0" @cd tools/YarnCheck && DOTNET_CLI_TELEMETRY_OPTOUT=1 \ dotnet run -- ../../NightclubArcadia/Assets/Dialogue $(NODE) $(PICKS) voices: ## Check writing/voices/*.md against skill_bible.json @python3 tools/writing/sync_voices.py --check voices-sync: ## Fold edited voice prose into skill_bible.json @python3 tools/writing/sync_voices.py --to-json test: lock ## Run the EditMode suite @mkdir -p $(RESULTS) @$(UNITY_CLI) test $(PROJECT) --no-banner --mode EditMode \ --output $(RESULTS)/editmode.xml --timeout 900 || true @python3 tools/ci/report_tests.py $(RESULTS)/editmode.xml test-play: lock ## Run the PlayMode suite (bootstrap + scene split) @mkdir -p $(RESULTS) @$(UNITY_CLI) test $(PROJECT) --no-banner --mode PlayMode \ --output $(RESULTS)/playmode.xml --timeout 900 || true @python3 tools/ci/report_tests.py $(RESULTS)/playmode.xml build: lock ## Build a macOS player into build/ @$(UNITY_CLI) build $(PROJECT) --no-banner --target StandaloneOSX \ --execute-method NightclubArcadia.EditorTools.PlayerBuild.BuildMacOS \ -o $(CURDIR)/build/NightclubArcadia.app lock: ## Fail if the Unity Editor has the project open @if pgrep -fl "Unity.app/Contents/MacOS/Unity" | grep -v AssetImportWorker | grep -q .; then \ echo "The Unity Editor is running — close it first (only one instance per project)."; \ exit 1; \ fi merge-driver: ## One-time: teach git to merge Unity YAML with UnityYAMLMerge @test -x "$(SMARTMERGE)" || { echo "UnityYAMLMerge not found at $(SMARTMERGE)"; exit 1; } @git config merge.unityyamlmerge.name "Unity SmartMerge" @git config merge.unityyamlmerge.driver "'$(SMARTMERGE)' merge -p --force --fallback none %O %B %A %A" @git config merge.unityyamlmerge.recursive binary @echo "configured: $$(git config merge.unityyamlmerge.name)" clean-results: ## Remove local test results @rm -rf $(RESULTS)