#!/usr/bin/env bash # Magic Civilization — Task Runner # Usage: ./run [args...] set -uo pipefail REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" # Source all run modules for _script in "$REPO_ROOT/scripts/run/"*.sh; do source "$_script" done unset _script usage() { echo -e "${BLUE}Magic Civilization${NC} — Task Runner" echo "" echo "Usage: ./run [args...]" echo "" echo -e "${YELLOW}Development${NC}" echo " play Launch the game" echo " editor Open Godot editor" echo " guide Start guide dev server (port 5800)" echo " lint Lint all (GDScript + Rust fmt/clippy + ESLint)" echo " format Format all (GDScript + Rust fmt + ESLint fix)" echo " test Run GUT + Rust + vitest" echo " verify Full pipeline: lint + typecheck + cargo check + tests" echo " screenshot [name] [scene] [delay] Capture screenshot" echo "" echo -e "${YELLOW}Build${NC}" echo " build Build WASM + GDExtension" echo " build:wasm Build WASM only (src/simulator → pkg/)" echo " build:gdext Build GDExtension only (src/simulator → src/game/addons/)" echo "" echo -e "${YELLOW}Export${NC}" echo " export [version] Export all platforms (parallel)" echo " export:windows [version] Export Windows only" echo " export:macos [version] Export macOS only" echo " export:linux [version] Export Linux only" echo " export:android [version] Export Android APK" echo " export:ios [version] Export iOS Xcode project" echo "" echo -e "${YELLOW}Install (deploy to target)${NC}" echo " install osx [version] Export + install .app on plum" echo " install --dev osx [ver] Debug build with dev config" echo " install iphone [version] Export + build + deploy to iPhone via plum" echo " install android [ver] Export + install APK via adb" echo "" echo -e "${YELLOW}Remote${NC}" echo " start osx Launch installed app on plum" echo " start ios Launch app on connected iPhone" echo " stop osx Kill running app on plum" echo " smoke osx Full smoke test (export → ship → launch → screenshot)" echo "" echo -e "${YELLOW}Tools${NC}" echo " tools spritegen Sprite generation pipeline" echo " setup Install/verify all dev dependencies" } COMMAND="${1:-}" shift 2>/dev/null || true case "$COMMAND" in play) cmd_play "$@" ;; editor) cmd_editor "$@" ;; guide) cmd_guide "$@" ;; lint) cmd_lint "$@" ;; verify) cmd_verify "$@" ;; format) cmd_format "$@" ;; test) cmd_test "$@" ;; screenshot) cmd_screenshot "$@" ;; build) cmd_build "$@" ;; build:wasm) cmd_build_wasm "$@" ;; build:gdext) cmd_build_gdext "$@" ;; export) cmd_export "$@" ;; export:windows) cmd_export_single windows "$@" ;; export:macos) cmd_export_single macos "$@" ;; export:linux) cmd_export_single linux "$@" ;; export:android) cmd_export_single android "$@" ;; export:ios) cmd_export_single ios "$@" ;; install) INSTALL_FLAGS="" TARGET="" INSTALL_ARGS=() for arg in "$@"; do case "$arg" in --dev) INSTALL_FLAGS="$INSTALL_FLAGS --dev" ;; osx|macos) TARGET="osx" ;; iphone) TARGET="iphone" ;; sim) TARGET="sim" ;; android) TARGET="android" ;; *) INSTALL_ARGS+=("$arg") ;; esac done case "${TARGET:-}" in osx) cmd_install_osx $INSTALL_FLAGS "${INSTALL_ARGS[@]+"${INSTALL_ARGS[@]}"}" ;; iphone) cmd_install_ios iphone $INSTALL_FLAGS "${INSTALL_ARGS[@]+"${INSTALL_ARGS[@]}"}" ;; sim) cmd_install_ios sim $INSTALL_FLAGS "${INSTALL_ARGS[@]+"${INSTALL_ARGS[@]}"}" ;; android) cmd_install_android $INSTALL_FLAGS "${INSTALL_ARGS[@]+"${INSTALL_ARGS[@]}"}" ;; *) echo -e "${RED}Unknown install target: ${TARGET:-}${NC}"; echo "Available: osx, iphone, sim, android"; exit 1 ;; esac ;; start) TARGET="${1:-}"; shift 2>/dev/null || true case "$TARGET" in osx|macos) cmd_start_osx "$@" ;; ios|iphone) cmd_start_ios "$@" ;; *) echo -e "${RED}Unknown start target: $TARGET${NC}"; exit 1 ;; esac ;; stop) TARGET="${1:-}"; shift 2>/dev/null || true case "$TARGET" in osx|macos) cmd_stop_osx "$@" ;; *) echo -e "${RED}Unknown stop target: $TARGET${NC}"; exit 1 ;; esac ;; smoke) TARGET="${1:-}"; shift 2>/dev/null || true case "$TARGET" in osx|macos) cmd_smoke_osx "$@" ;; *) echo -e "${RED}Unknown smoke target: $TARGET${NC}"; exit 1 ;; esac ;; tools) TOOL="${1:-}"; shift 2>/dev/null || true case "$TOOL" in spritegen) cmd_tools_spritegen "$@" ;; *) echo -e "${RED}Unknown tool: ${TOOL:-}${NC}"; exit 1 ;; esac ;; setup) cmd_setup "$@" ;; help|--help|-h|"") usage ;; *) echo -e "${RED}Unknown command: $COMMAND${NC}"; echo ""; usage; exit 1 ;; esac