mirror of
https://github.com/ansible-collections/community.general.git
synced 2024-09-14 20:13:21 +02:00
powershell.ps1: Add str, int, float types and ignore $null values (#21377)
* powershell.ps1: Add str type and ignore $null values Changes include: - New "str" type support using -type "str" - Ensure that $null values are retained (for bool and str types) (Note: $null means unspecified value for parameters) - Some minor cosmetic changes * Also add -type "int" and -type "float" No modules require this at the moment though.
This commit is contained in:
parent
371f9fa90d
commit
f47901c3ad
1 changed files with 22 additions and 6 deletions
|
@ -130,9 +130,15 @@ Function Add-DeprecationWarning($obj, $message, $version = $null)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# Helper function to expand environment variables in values. By default
|
||||||
|
# it turns any type to a string, but we ensure $null remains $null.
|
||||||
Function Expand-Environment($value)
|
Function Expand-Environment($value)
|
||||||
{
|
{
|
||||||
[System.Environment]::ExpandEnvironmentVariables($value)
|
if ($value -ne $null) {
|
||||||
|
[System.Environment]::ExpandEnvironmentVariables($value)
|
||||||
|
} else {
|
||||||
|
$value
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
# Helper function to get an "attribute" from a psobject instance in powershell.
|
# Helper function to get an "attribute" from a psobject instance in powershell.
|
||||||
|
@ -192,12 +198,22 @@ Function Get-AnsibleParam($obj, $name, $default = $null, $resultobj = @{}, $fail
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# If $value -eq $null, the parameter was unspecified
|
||||||
if ($value -ne $null -and $type -eq "path") {
|
if ($value -ne $null -and $type -eq "path") {
|
||||||
# Expand environment variables on path-type (Beware: turns $null into "")
|
# Expand environment variables on path-type
|
||||||
$value = Expand-Environment($value)
|
$value = Expand-Environment($value)
|
||||||
} elseif ($type -eq "bool") {
|
} elseif ($value -ne $null -and $type -eq "str") {
|
||||||
|
# Convert str types to real Powershell strings
|
||||||
|
$value = $value.ToString()
|
||||||
|
} elseif ($value -ne $null -and $type -eq "bool") {
|
||||||
# Convert boolean types to real Powershell booleans
|
# Convert boolean types to real Powershell booleans
|
||||||
$value = $value | ConvertTo-Bool
|
$value = $value | ConvertTo-Bool
|
||||||
|
} elseif ($value -ne $null -and $type -eq "int") {
|
||||||
|
# Convert int types to real Powershell integers
|
||||||
|
$value = $value -as [int]
|
||||||
|
} elseif ($value -ne $null -and $type -eq "float") {
|
||||||
|
# Convert float types to real Powershell floats
|
||||||
|
$value = $value -as [float]
|
||||||
}
|
}
|
||||||
|
|
||||||
return $value
|
return $value
|
||||||
|
@ -261,7 +277,7 @@ Function Parse-Args($arguments, $supports_check_mode = $false)
|
||||||
# and above can handle:
|
# and above can handle:
|
||||||
Function Get-FileChecksum($path, $algorithm = 'sha1')
|
Function Get-FileChecksum($path, $algorithm = 'sha1')
|
||||||
{
|
{
|
||||||
If (Test-Path -PathType Leaf $path)
|
If (Test-Path -Path $path -PathType Leaf)
|
||||||
{
|
{
|
||||||
switch ($algorithm)
|
switch ($algorithm)
|
||||||
{
|
{
|
||||||
|
@ -270,7 +286,7 @@ Function Get-FileChecksum($path, $algorithm = 'sha1')
|
||||||
'sha256' { $sp = New-Object -TypeName System.Security.Cryptography.SHA256CryptoServiceProvider }
|
'sha256' { $sp = New-Object -TypeName System.Security.Cryptography.SHA256CryptoServiceProvider }
|
||||||
'sha384' { $sp = New-Object -TypeName System.Security.Cryptography.SHA384CryptoServiceProvider }
|
'sha384' { $sp = New-Object -TypeName System.Security.Cryptography.SHA384CryptoServiceProvider }
|
||||||
'sha512' { $sp = New-Object -TypeName System.Security.Cryptography.SHA512CryptoServiceProvider }
|
'sha512' { $sp = New-Object -TypeName System.Security.Cryptography.SHA512CryptoServiceProvider }
|
||||||
default { Fail-Json (New-Object PSObject) "Unsupported hash algorithm supplied '$algorithm'" }
|
default { Fail-Json @{} "Unsupported hash algorithm supplied '$algorithm'" }
|
||||||
}
|
}
|
||||||
|
|
||||||
If ($PSVersionTable.PSVersion.Major -ge 4) {
|
If ($PSVersionTable.PSVersion.Major -ge 4) {
|
||||||
|
@ -282,7 +298,7 @@ Function Get-FileChecksum($path, $algorithm = 'sha1')
|
||||||
$fp.Dispose();
|
$fp.Dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ElseIf (Test-Path -PathType Container $path)
|
ElseIf (Test-Path -Path $path -PathType Container)
|
||||||
{
|
{
|
||||||
$hash = "3";
|
$hash = "3";
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue