name: 4. Build iAPS
run-name: Build iAPS (${{ github.ref_name }})
on:
  workflow_dispatch:
  
  ## Remove the "#" sign from the beginning of the line below to get automated builds on push (code changes in your repository)
  #push:
  
  ## Remove the "#" sign from the beginning of the two lines below to get automated builds every two months
  #schedule:
    #- cron: '0 17 1 */2 *' # Runs at 17:00 UTC on the 1st in Jan, Mar, May, Jul, Sep and Nov.


jobs:
  secrets:
    uses: ./.github/workflows/validate_secrets.yml
    secrets: inherit

  build:
    needs: secrets
    runs-on: macos-13
    steps:
      # Uncomment to manually select Xcode version if needed
      - name: Select Xcode version
        run: "sudo xcode-select --switch /Applications/Xcode_14.3.app/Contents/Developer"

      # Checks-out the repo
      - name: Checkout Repo
        uses: actions/checkout@v3
        with:
          submodules: recursive
      
      # Patch Fastlane Match to not print tables
      - name: Patch Match Tables
        run: find /usr/local/lib/ruby/gems -name table_printer.rb | xargs sed -i "" "/puts(Terminal::Table.new(params))/d"
      
      # Build signed iAPS IPA file
      - name: Fastlane Build & Archive
        run: fastlane build_iAPS
        env:
          TEAMID: ${{ secrets.TEAMID }}
          GH_PAT: ${{ secrets.GH_PAT }}
          FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }}
          FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }}
          FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }}
          MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}
      
      # Upload to TestFlight
      - name: Fastlane upload to TestFlight
        run: fastlane release
        env:
          TEAMID: ${{ secrets.TEAMID }}
          GH_PAT: ${{ secrets.GH_PAT }}
          FASTLANE_KEY_ID: ${{ secrets.FASTLANE_KEY_ID }}
          FASTLANE_ISSUER_ID: ${{ secrets.FASTLANE_ISSUER_ID }}
          FASTLANE_KEY: ${{ secrets.FASTLANE_KEY }}
          MATCH_PASSWORD: ${{ secrets.MATCH_PASSWORD }}

      # Upload Build artifacts
      - name: Upload build log, IPA and Symbol artifacts
        if: always()
        uses: actions/upload-artifact@v3
        with:
          name: build-artifacts
          path: |
            artifacts
            buildlog