LibreDevOpsHelpers.Github/LibreDevOpsHelpers.Github.psm1

Set-StrictMode -Version Latest

function Get-LdoGitHubActionsInput {
    <#
    .SYNOPSIS
        Reads a GitHub Actions action input from the environment.

    .DESCRIPTION
        Resolves an action input by checking the INPUT_<NAME> environment variable, trying both
        the underscore-normalised form (GitHub's standard, dashes converted to underscores) and
        the raw upper-cased form. Returns the default value when neither is set.

    .PARAMETER Name
        The action input name, for example 'my-input'.

    .PARAMETER Default
        Value to return when the input is not set. Defaults to $null.

    .EXAMPLE
        Get-LdoGitHubActionsInput -Name 'terraform-version' -Default 'latest'

    .OUTPUTS
        System.String
    #>

    [CmdletBinding()]
    [OutputType([string])]
    param(
        [Parameter(Mandatory)][ValidateNotNullOrEmpty()][string]$Name,
        $Default = $null
    )

    $envVar = "INPUT_$($Name.Replace('-', '_').ToUpper())"
    $value = [System.Environment]::GetEnvironmentVariable($envVar)
    if (-not [string]::IsNullOrEmpty($value)) {
        return $value
    }

    $envVarRaw = "INPUT_$($Name.ToUpper())"
    $valueRaw = [System.Environment]::GetEnvironmentVariable($envVarRaw)
    if (-not [string]::IsNullOrEmpty($valueRaw)) {
        return $valueRaw
    }

    return $Default
}

Export-ModuleMember -Function Get-LdoGitHubActionsInput