name: 'Package plugin'
description: 'Packages the plugin for specified architecture and build config.'
inputs:
  target:
    description: 'Build target for dependencies'
    required: true
  config:
    description: 'Build configuration'
    required: false
    default: 'Release'
  codesign:
    description: 'Enable codesigning (macOS only)'
    required: false
    default: 'false'
  notarize:
    description: 'Enable notarization (macOS only)'
    required: false
    default: 'false'
  codesignIdent:
    description: 'Developer ID for application codesigning (macOS only)'
    required: false
    default: '-'
  installerIdent:
    description: 'Developer ID for installer package codesigning (macOS only)'
    required: false
    default: ''
  codesignUser:
    description: 'Apple ID username for notarization (macOS only)'
    required: false
    default: ''
  codesignPass:
    description: 'Apple ID password for notarization (macOS only)'
    required: false
    default: ''
  createInstaller:
    description: 'Create InnoSetup installer (Windows only)'
    required: false
    default: 'false'
  portable:
    description: 'Create deb package / portable archive (Linux only)'
    required: false
    default: 'false'
  workingDirectory:
    description: 'Working directory for packaging'
    required: false
    default: ${{ github.workspace }}
runs:
  using: 'composite'
  steps:
    - name: Run macOS packaging
      if: ${{ runner.os == 'macOS' }}
      shell: zsh {0}
      env:
        CODESIGN_IDENT: ${{ inputs.codesignIdent }}
        CODESIGN_IDENT_INSTALLER: ${{ inputs.installerIdent }}
        CODESIGN_IDENT_USER: ${{ inputs.codesignUser }}
        CODESIGN_IDENT_PASS: ${{ inputs.codesignPass }}
      run: |
        package_args=(
          -c ${{ inputs.config }}
          -t macos-${{ inputs.target }}
        )

        if [[ '${{ inputs.codesign }}' == 'true' ]] package_args+=(-s)
        if [[ '${{ inputs.notarize }}' == 'true' ]] package_args+=(-n)
        if (( ${+CI} && ${+RUNNER_DEBUG} )) build_args+=(--debug)

        package_args+=(-z)

        ${{ inputs.workingDirectory }}/.github/scripts/package-macos.zsh ${package_args}

    - name: Run Linux packaging
      if: ${{ runner.os == 'Linux' }}
      shell: bash
      run: |
        package_args=(
          -c ${{ inputs.config }}
          -t linux-${{ inputs.target }}
        )
        if [[ -n "${CI}" && -n "${RUNNER_DEBUG}" ]]; then
          build_args+=(--debug)
        fi

        if [[ '${{ inputs.portable }}' == 'true' ]]; then
          package_args+=(-z)
        fi

        ${{ inputs.workingDirectory }}/.github/scripts/package-linux.sh "${package_args[@]}"

    - name: Run Windows packaging
      if: ${{ runner.os == 'Windows' }}
      shell: pwsh
      run: |
        $PackageArgs = @{
          Target = '${{ inputs.target }}'
          Configuration = '${{ inputs.config }}'
        }

        if ( '${{ inputs.createInstaller }}' -eq 'true' ) {
          $PackageArgs += @{BuildInstaller = $true}
        }

        if ( ( Test-Path env:CI ) -and ( Test-Path env:RUNNER_DEBUG ) ) {
          $BuildArgs += @{
            Debug = $true
          }
        }

        ${{ inputs.workingDirectory }}/.github/scripts/Package-Windows.ps1 @PackageArgs
