on:
  push:
    tags:
      - 'v*'

jobs:
  build:
    runs-on: macos-latest
    env:
      # $BUNDLE_GEMFILE must be set at the job level, so it is set for all steps
      BUNDLE_GEMFILE: ${{ github.workspace }}/ios/Gemfile
    steps:
      - uses: actions/checkout@v4

      - name: Set up ruby env
        uses: ruby/setup-ruby@v1
        with:
          ruby-version: 3.3
          bundler-cache: true # runs 'bundle install' and caches installed gems automatically

      - name: Install Flutter
        uses: subosito/flutter-action@v2
        with:
          channel: stable
          flutter-version: 3.22.0
          cache: true

      - name: Infer version number from git tag
        id: version
        env: 
          REF_NAME: ${{ github.ref_name }}
        run:
          # remove the 'v' prefix from the tag name
          echo "BUILD_NAME=${REF_NAME//v}" >> $GITHUB_ENV

      - name: Setup SSH key for match git repo
        # and mark the host as known
        run: |
          echo $MATCH_REPO_SSH_KEY | base64 --decode > ~/.ssh/id_rsa
          chmod 600 ~/.ssh/id_rsa
          ssh-keyscan -p 2222 git.kluster.moll.re > ~/.ssh/known_hosts
        env:
          MATCH_REPO_SSH_KEY: ${{ secrets.IOS_MATCH_REPO_SSH_KEY_BASE64 }}

      - name: Install dependencies and clean up
        run: |
          flutter pub get
          bundle exec pod install
          flutter clean
          bundle exec pod cache clean --all
        working-directory: ios

      - name: Run fastlane lane
        run: bundle exec fastlane deploy_release --verbose
        working-directory: ios
        env:
          BUILD_NUMBER: ${{ github.run_number }}
          # BUILD_NAME is implicitly available
          GOOGLE_MAPS_API_KEY: ${{ secrets.GOOGLE_MAPS_API_KEY }}
          IOS_ASC_KEY_ID: ${{ secrets.IOS_ASC_KEY_ID }}
          IOS_ASC_ISSUER_ID: ${{ secrets.IOS_ASC_ISSUER_ID }}
          IOS_ASC_KEY: ${{ secrets.IOS_ASC_KEY }}
          MATCH_PASSWORD: ${{ secrets.IOS_MATCH_PASSWORD }}
          IOS_GOOGLE_MAPS_API_KEY: ${{ secrets.IOS_GOOGLE_MAPS_API_KEY }}