# For more information see: https://help.github.com/actions/language-and-framework-guides/using-python-with-github-actions

name: build KCC for mac os

on:
  workflow_dispatch:
  push:
    tags:
      - "v*.*.*"

    # Don't trigger if it's just a documentation update
    paths-ignore:
      - '**.md'
      - '**.MD'
      - '**.yml'
      - '**.sh'
      - 'docs/**'
      - 'Dockerfile'
      - 'LICENSE'
      - '.gitattributes'
      - '.gitignore'
      - '.dockerignore'

jobs:
  build:
    strategy:
      matrix:
        os: [ macos-13, macos-14 ]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - name: Set up Python
        uses: actions/setup-python@v5
        with:
          python-version: 3.11
          cache: 'pip'
      - name: Install python dependencies
        run: |
          python -m pip install --upgrade pip setuptools wheel pyinstaller certifi
          pip install -r requirements.txt
      - name: Install the Apple certificate and provisioning profile
#        TODO signing
#        https://federicoterzi.com/blog/automatic-code-signing-and-notarization-for-macos-apps-using-github-actions/
        if: ${{ false }}
        env:
          BUILD_CERTIFICATE_BASE64: ${{ secrets.BUILD_CERTIFICATE_BASE64 }}
          P12_PASSWORD: ${{ secrets.P12_PASSWORD }}
          BUILD_PROVISION_PROFILE_BASE64: ${{ secrets.BUILD_PROVISION_PROFILE_BASE64 }}
          KEYCHAIN_PASSWORD: ${{ secrets.KEYCHAIN_PASSWORD }}
        run: |
          # create variables
          CERTIFICATE_PATH=$RUNNER_TEMP/build_certificate.p12
          PP_PATH=$RUNNER_TEMP/build_pp.mobileprovision
          KEYCHAIN_PATH=$RUNNER_TEMP/app-signing.keychain-db
          
          # import certificate and provisioning profile from secrets
          echo -n "$BUILD_CERTIFICATE_BASE64" | base64 --decode -o $CERTIFICATE_PATH
          echo -n "$BUILD_PROVISION_PROFILE_BASE64" | base64 --decode -o $PP_PATH
          
          # create temporary keychain
          security create-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
          security set-keychain-settings -lut 21600 $KEYCHAIN_PATH
          security unlock-keychain -p "$KEYCHAIN_PASSWORD" $KEYCHAIN_PATH
          
          # import certificate to keychain
          security import $CERTIFICATE_PATH -P "$P12_PASSWORD" -A -t cert -f pkcs12 -k $KEYCHAIN_PATH
          security list-keychain -d user -s $KEYCHAIN_PATH
          
          # apply provisioning profile
          mkdir -p ~/Library/MobileDevice/Provisioning\ Profiles
          cp $PP_PATH ~/Library/MobileDevice/Provisioning\ Profiles
      - uses: actions/setup-node@v4
        with:
          node-version: 16
      - run: npm install -g appdmg
      - name: build binary
#        TODO /usr/bin/codesign --force -s "$MACOS_CERTIFICATE_NAME" --options runtime dist/Applications/Kindle\ Comic\ Converter.app -v
        run: |
          python setup.py build_binary
      - name: upload build
        uses: actions/upload-artifact@v4
        with:
          name: mac-os-build-${{ runner.arch }}
          path: dist/*.dmg
      - name: Release
        uses: softprops/action-gh-release@v2
        if: startsWith(github.ref, 'refs/tags/')
        with:
          prerelease: true
          generate_release_notes: true
          files: |
            CHANGELOG.md
            LICENSE.txt
            dist/*.dmg
      - name: Clean up keychain and provisioning profile
#        TODO signing
        if: ${{ false }}
#        if: ${{ always() }}
        run: |
          security delete-keychain $RUNNER_TEMP/app-signing.keychain-db
          rm ~/Library/MobileDevice/Provisioning\ Profiles/build_pp.mobileprovision
