name: "Build 🔨"

on:
  push:
    branches: [ main ]
  pull_request:
    types:
      - opened
      - reopened
      - synchronize
      - ready_for_review
    branches: [ main ]

jobs:
  build:
    name: "Build 🔨"
    if: github.event.pull_request.draft == false
    strategy:
      matrix:
        scheme:
          - "Swiftfin"
          - "Swiftfin tvOS"
          
    runs-on: macos-12
    
    steps:    
      - name: Checkout
        uses: actions/checkout@v1
      
      - name: Install SwiftGen
        run: brew install swiftgen
      
      - name: Cache Carthage
        uses: actions/cache@v3
        id: carthage-cache
        with:
          path: Carthage
          key: ${{ runner.os }}-carthage-${{ hashFiles('**/Cartfile.resolved') }}
          restore-keys: ${{ runner.os }}-carthage-
            
      - name: Update Carthage
        run: carthage update --use-xcframeworks --cache-builds
      
      - name: Cache Swift packages
        uses: actions/cache@v3
        with:
          path: .build
          key: ${{ runner.os }}-${{ matrix.scheme }}-spm-${{ hashFiles('**/Package.resolved') }}
          restore-keys: ${{ runner.os }}-${{ matrix.scheme }}-spm-
      
      - name: Build
        uses: nick-fields/retry@v2
        with:
          max_attempts: 3
          retry_on: error
          timeout_minutes: 60
          command: |
            xcodebuild build -project "Swiftfin.xcodeproj" \
            -scheme "${{ matrix.scheme }}" \
            CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO CODE_SIGNING_ALLOWED=NO          
      
