# Scry development commands set shell := ["C:/Program Files/Git/usr/bin/bash.exe", "-c"] set unstable := true # Android SDK paths android_sdk := replace(env('LOCALAPPDATA'), '\', '/') / "Android/Sdk" adb := android_sdk / "platform-tools/adb.exe" emulator := android_sdk / "emulator/emulator.exe" camera_virtual := "-camera-back virtualscene -virtualscene-poster wall=\"" + (justfile_directory() / "TestImages/reference_alpha/serra_angel.jpg") + "\"" camera_webcam := "-camera-back webcam0 -camera-front webcam0" [private] @default: just --list # Start emulator in background emu camera="virtual": {{ emulator }} -avd Pixel_6 {{ if camera == "virtual" { camera_virtual } else { camera_webcam } }} -no-snapshot-load -gpu host # Kill the running emulator emu-kill: {{ adb }} emu kill # Wait for emulator to fully boot (timeout after 2 minutes) [script] emu-wait: # Wait for Android emulator to boot with timeout TIMEOUT=120 echo "Waiting for emulator to boot..." for ((i=TIMEOUT; i>0; i--)); do if [ "$({{ adb }} shell getprop sys.boot_completed 2>/dev/null)" = "1" ]; then echo "Emulator ready" exit 0 fi sleep 1 done echo "Emulator failed to boot within 2 minutes" exit 1 # Build a project build project="src/Scry.App" target="net10.0-android": @echo "Building {{ project }}..." dotnet build {{ project }} -f {{ target }} -c Debug @echo "Build complete" # Publish a project (creates distributable) publish project="src/Scry.App" target="net10.0-android": @echo "Publishing {{ project }} (this takes a while)..." dotnet publish {{ project }} -f {{ target }} -c Release @echo "Publish complete" # Install APK to emulator/device install: {{ adb }} install -r src/Scry.App/bin/Release/net10.0-android/publish/land.charm.scry-Signed.apk # Launch the app on emulator/device launch: {{ adb }} shell am start -n land.charm.scry/crc64fb23cc0d511b0157.MainActivity # Publish, install, and launch run: (publish "src/Scry.App") install launch # View app crash logs logs: {{ adb }} logcat -d | grep -iE "land.charm.scry|scry|mono|dotnet" | tail -80 # Run tests test: dotnet test test/Scry.Tests # Generate the card hash database from Scryfall gen-db: (build "tools/DbGenerator" "net10.0") @echo "Running Database generator (this takes a while)..." dotnet run --project tools/DbGenerator --no-build -- src/Scry.App/Resources/Raw/card_hashes.db @echo "Completed generating the database" # Full workflow: start emulator, wait, run with hot reload dev: dotnet watch --project src/Scry.App -f net10.0-android