IOS_SIMULATOR := "platform=iOS Simulator,name=iPhone 17 Pro,OS=26.4"

rbenv-install:
    rbenv install

bundle-install:
    bundle install

mint-install:
    mint bootstrap

tuist-install:
    tuist install

generate-xcode-workspace:
    tuist generate --no-open

set-up:
    mkdir -p mobile-ios/Resources/Audio
    mkdir -p mobile-ios/Resources/Models
    curl --silent --fail --show-error --location --output mobile-ios/Resources/Audio/audio.wav https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/audio.wav
    curl --silent --fail --show-error --location --output mobile-ios/Resources/Models/kokoro-v1_0.safetensors https://huggingface.co/mlx-community/Kokoro-82M-bf16/resolve/main/kokoro-v1_0.safetensors
    curl --silent --fail --show-error --location --output mobile-ios/Resources/Models/voices.npz https://raw.githubusercontent.com/mlalma/KokoroTestApp/main/Resources/voices.npz
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/ModernBERTMaskedLM.mlpackage.tar.gz | tar -x -z -C mobile-ios/Resources/Models/
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/ModernBERTTokenizer.tar.gz | tar -x -z -C mobile-ios/Resources/Models/
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/breast_cancer_catboost.mlmodelc.tar.gz | tar -x -z -C mobile-ios/Resources/Models/
    # https://huggingface.co/apple/coreml-stable-diffusion-xl-base-ios/tree/main/coreml-stable-diffusion-xl-base-ios_split_einsum_compiled
    (
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/coreml-stable-diffusion-xl-base-ios.tar.gz.part-aa
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/coreml-stable-diffusion-xl-base-ios.tar.gz.part-ab
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/coreml-stable-diffusion-xl-base-ios.tar.gz.part-ac
    ) | tar -x -z -C mobile-ios/Resources/Models/
    # https://huggingface.co/FluidInference/speaker-diarization-coreml/tree/main/pyannote_segmentation.mlmodelc
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/pyannote_segmentation.mlmodelc.tar.gz | tar -x -z -C mobile-ios/Resources/Models/
    # https://huggingface.co/FluidInference/speaker-diarization-coreml/tree/main/wespeaker_v2.mlmodelc
    curl --silent --fail --show-error --location https://media.githubusercontent.com/media/hongbo-miao/hongbomiao.com-data/refs/heads/main/mobile-ios/wespeaker_v2.mlmodelc.tar.gz | tar -x -z -C mobile-ios/Resources/Models/

open-xcode-workspace:
    open mobile-ios.xcworkspace

test:
    xcodebuild test \
        -workspace mobile-ios.xcworkspace \
        -scheme mobile-ios \
        -destination "{{ IOS_SIMULATOR }}"

test-coverage:
    bundle exec slather

lint-swift-format:
    mint run swift-format format . --recursive

lint-swift-format-fix:
    mint run swift-format format . --recursive --in-place

lint-swift-lint:
    mint run swift-format lint . --recursive --strict
