name: "Install exe"
description: "Download and install exe"
inputs:
  url:
    description: "URL of the exe installer"
    required: true
  args:
    description: "Installer arguments"
    required: true
  timeout:
    description: "Timeout (in ms)"
    required: false
    default: "600000"

runs:
  using: "composite"
  steps:
    - name: Install EXE
      shell: pwsh
      run: |
        $ErrorActionPreference = "Stop"
        write-host "Downloading Installer EXE"
        Invoke-WebRequest -Uri "${{ inputs.url }}" -OutFile "${env:RUNNER_TEMP}\temp-install.exe"
        write-host "Installing"
        $proc = Start-Process "${env:RUNNER_TEMP}\temp-install.exe" -ArgumentList '${{ inputs.args }}' -NoNewWindow -PassThru
        $completed = $proc.WaitForExit(${{ inputs.timeout }})
        if (-not $completed) {
            Write-Error "Installer timed out. Killing the process"
            $proc.Kill()
            exit 1
        }
        if ($proc.ExitCode -ne 0) {
            Write-Error "Installer failed with exit code $($proc.ExitCode)"
            exit 1
        }
        write-host "Completed installation"
