simulator := "platform=iOS Simulator,name=iPhone 16e,OS=latest"
simulator_name := "iPhone 16e"
derived_data := "build/DerivedData"

default:
  @just build

build:
  if [ ! -d "Sybil.xcodeproj" ]; then xcodegen --spec project.yml; fi
  if command -v xcbeautify >/dev/null 2>&1; then \
    xcodebuild -scheme Sybil -destination '{{simulator}}' | xcbeautify; \
  else \
    xcodebuild -scheme Sybil -destination '{{simulator}}'; \
  fi

test:
  cd Packages/Sybil && xcodebuild test -scheme Sybil -destination '{{simulator}}' -parallel-testing-enabled NO

run:
  if [ ! -d "Sybil.xcodeproj" ]; then xcodegen --spec project.yml; fi
  xcrun simctl boot '{{simulator_name}}' 2>/dev/null || true
  xcodebuild -scheme Sybil -destination '{{simulator}}' -derivedDataPath '{{derived_data}}'
  xcrun simctl install booted '{{derived_data}}/Build/Products/Debug-iphonesimulator/Sybil.app'
  xcrun simctl launch booted net.buzzert.sybil2

screenshot path="build/sybil-screenshot.png":
  mkdir -p "$(dirname '{{path}}')"
  xcrun simctl io booted screenshot '{{path}}'
