name: Desktop Release

on:
    push:
        tags:
            - "v*"

permissions:
    contents: write

jobs:
    macos-release:
        runs-on: macos-latest

        steps:
            - uses: actions/checkout@v4

            - name: Setup Node
              uses: actions/setup-node@v4
              with:
                  node-version: "20"
                  cache: npm

            - name: Setup Rust
              uses: dtolnay/rust-toolchain@stable

            - name: Setup Python
              uses: actions/setup-python@v5
              with:
                  python-version: "3.11"

            - name: Install frontend dependencies
              run: npm ci

            - name: Build packaged sidecar binary
              run: ./scripts/build-sidecar.sh

            - name: Build and publish macOS app
              uses: tauri-apps/tauri-action@v0
              env:
                  GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
                  APPLE_CERTIFICATE: ${{ secrets.APPLE_CERTIFICATE }}
                  APPLE_CERTIFICATE_PASSWORD: ${{ secrets.APPLE_CERTIFICATE_PASSWORD }}
                  APPLE_SIGNING_IDENTITY: ${{ secrets.APPLE_SIGNING_IDENTITY }}
                  APPLE_ID: ${{ secrets.APPLE_ID }}
                  APPLE_PASSWORD: ${{ secrets.APPLE_PASSWORD }}
                  APPLE_TEAM_ID: ${{ secrets.APPLE_TEAM_ID }}
              with:
                  tagName: ${{ github.ref_name }}
                  releaseName: "ShowRunner ${{ github.ref_name }}"
                  releaseBody: "Signed macOS desktop release."
                  releaseDraft: true
                  prerelease: false
                  args: --bundles app

            - name: Verify bundled sidecar in release app
              run: |
                  APP_PATH="$(find src-tauri/target/release/bundle/macos -maxdepth 1 -name '*.app' | head -n 1)"
                  test -n "$APP_PATH"
                  test -x "$APP_PATH/Contents/Resources/binaries/showrunner-sidecar" || \
                    test -x "$APP_PATH/Contents/Resources/binaries/showrunner-sidecar-aarch64-apple-darwin" || \
                    test -x "$APP_PATH/Contents/Resources/binaries/showrunner-sidecar-x86_64-apple-darwin"
