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: 'RelWithDebInfo'
  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: ''
  codesignTeam:
    description: 'Developer team for 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: ''
  package:
    description: 'Create Windows or macOS installation package'
    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 --no-rcs --errexit --pipefail {0}
      working-directory: ${{ inputs.workingDirectory }}
      env:
        CODESIGN_IDENT: ${{ inputs.codesignIdent }}
        CODESIGN_IDENT_INSTALLER: ${{ inputs.installerIdent }}
        CODESIGN_TEAM: ${{ inputs.codesignTeam }}
        CODESIGN_IDENT_USER: ${{ inputs.codesignUser }}
        CODESIGN_IDENT_PASS: ${{ inputs.codesignPass }}
      run: |
        : Run macOS Packaging

        local -a package_args=(--config ${{ inputs.config }})
        if (( ${+RUNNER_DEBUG} )) package_args+=(--debug)

        if [[ '${{ inputs.codesign }}' == 'true' ]] package_args+=(--codesign)
        if [[ '${{ inputs.notarize }}' == 'true' ]] package_args+=(--notarize)
        if [[ '${{ inputs.package }}' == 'true' ]] package_args+=(--package)

        .github/scripts/package-macos ${package_args}

    - name: Install Dependencies 🛍️
      if: runner.os == 'Linux'
      shell: bash
      run: |
        : Install Dependencies 🛍️
        echo ::group::Install Dependencies
        eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"
        echo "/home/linuxbrew/.linuxbrew/bin:/home/linuxbrew/.linuxbrew/sbin" >> $GITHUB_PATH
        brew install --quiet zsh
        echo ::endgroup::

    - name: Run Ubuntu Packaging
      if: runner.os == 'Linux'
      shell: zsh --no-rcs --errexit --pipefail {0}
      working-directory: ${{ inputs.workingDirectory }}
      run: |
        : Run Ubuntu Packaging
        package_args=(
          --target linux-${{ inputs.target }}
          --config ${{ inputs.config }}
        )
        if (( ${+RUNNER_DEBUG} )) build_args+=(--debug)

        if [[ '${{ inputs.package }}' == 'true' ]] package_args+=(--package)

        .github/scripts/package-linux ${package_args}

    - name: Run Windows Packaging
      if: runner.os == 'Windows'
      shell: pwsh
      run: |
        # Run Windows Packaging
        if ( $Env:RUNNER_DEBUG -ne $null ) {
          Set-PSDebug -Trace 1
        }

        $PackageArgs = @{
          Target = '${{ inputs.target }}'
          Configuration = '${{ inputs.config }}'
        }

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

        .github/scripts/Package-Windows.ps1 @PackageArgs
