name: Set GX Mobile ios configure
author: Bolt lee
description: 'Prepare gx github aciton value'
inputs:
  xcode-version:
    description: '' # xcode-version
    required: true
    default: '13.1'
  ENCRYPTED_CERT_FILE_PATH:
    description: '' # certificate
    required: false
    default: ${{ '.github/secrets/certs.p12.gpg' }}
  DECRYPTED_CERT_FILE_PATH:
    description: '' # certificate
    required: false
    default: ${{ '.github/secrets/certs.p12' }}
  CERT_ENCRYPTION_KEY:
    description: '' # gpg로 파일 암호화할 때 사용한 암호
    required: true
    default: ''
  ENCRYPTED_WIDGET_PROVISION_FILE_PATH:
    description: '' # provisioning for widget extension
    required: false
    default: ''
  DECRYPTED_WIDGET_PROVISION_FILE_PATH:
    description: '' # provisioning for widget extension
    required: false
    default: ''
  PROVISIONING_WIDGET_ENCRYPTION_KEY:
    description: '' # widget provisioning # gpg로 파일 암호화할 때 사용한 암호
    required: false
    default: ''
  ENCRYPTED_PROVISION_FILE_PATH:
    description: '' # provisioning
    required: true
    default: ''
  DECRYPTED_PROVISION_FILE_PATH:
    description: '' # provisioning
    required: true
    default: ''
  PROVISIONING_ENCRYPTION_KEY:
    description: '' # provisioning # gpg로 파일 암호화할 때 사용한 암호
    required: true
    default: ''
  CERT_EXPORT_KEY:
    description: '' # certification export key
    required: true
    default: ''
  KEYCHAIN:
    description: '' # certification export key
    required: false
    default: ${{ 'test.keychain' }}

outputs:
  deploy_env:
    description: 'Get deployed environment'
    value: ${{ steps.set-values.outputs.deploy_env }}
  check_all:
    description: 'Check if value is true'
    value: ${{ steps.set-values.outputs.check_all }}
  tag:
    description: 'Get tag'
    value: ${{ steps.set-values.outputs.tag }}


runs:
  using: "composite"
  steps:
    - name: setup xcode
      uses: maxim-lobanov/setup-xcode@v1
      with:
        xcode-version: ${{ inputs.xcode-version }}
    - name: Configure keychain
      shell: bash
      run: |
        security create-keychain -p "" ${{ inputs.KEYCHAIN }}
        security list-keychains -s ${{ inputs.KEYCHAIN }}
        security default-keychain -s ${{ inputs.KEYCHAIN }}
        security unlock-keychain -p "" ${{ inputs.KEYCHAIN }}
        security set-keychain-settings
    - name: Configure Code Signing
      shell: bash
      run: |
        gpg -d -o  ${{ inputs.DECRYPTED_CERT_FILE_PATH }} --pinentry-mode=loopback --passphrase ${{ inputs.CERT_ENCRYPTION_KEY }} ${{ inputs.ENCRYPTED_CERT_FILE_PATH }}
        gpg -d -o ${{ inputs.DECRYPTED_PROVISION_FILE_PATH }} --pinentry-mode=loopback --passphrase ${{ inputs.PROVISIONING_ENCRYPTION_KEY }} ${{ inputs.ENCRYPTED_PROVISION_FILE_PATH }}
        gpg -d -o ${{ inputs.DECRYPTED_WIDGET_PROVISION_FILE_PATH }} --pinentry-mode=loopback --passphrase ${{ inputs.PROVISIONING_WIDGET_ENCRYPTION_KEY }} ${{ inputs.ENCRYPTED_WIDGET_PROVISION_FILE_PATH }}
        security import ${{ inputs.DECRYPTED_CERT_FILE_PATH }} -k ${{ inputs.KEYCHAIN }} -P  ${{ inputs.CERT_EXPORT_KEY }} -A
        security set-key-partition-list -S apple-tool:,apple: -s -k "" ${{ inputs.KEYCHAIN }}
        mkdir -p "$HOME/Library/MobileDevice/Provisioning Profiles"
        echo `ls .github/secrets/*.mobileprovision`
          for PROVISION in `ls .github/secrets/*.mobileprovision`
          do
            UUID=`/usr/libexec/PlistBuddy -c 'Print :UUID' /dev/stdin <<< $(security cms -D -i ./$PROVISION)`
          cp "./$PROVISION" "$HOME/Library/MobileDevice/Provisioning Profiles/$UUID.mobileprovision"
        done
