Foil.psm1
# Module created by Microsoft.PowerShell.Crescendo Function Get-ChocoSource { [CmdletBinding()] param( ) BEGIN { $__PARAMETERMAP = @{} $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ($output) if ($output) { $output | ForEach-Object { $sourceData = $_ -split '\|' [pscustomobject]@{ Name = $sourceData[0] Location = $sourceData[1] Disabled = $sourceData[2] UserName = $sourceData[3] Certificate = $sourceData[4] Priority = $sourceData[5] 'Bypass Proxy' = $sourceData[6] 'Allow Self Service' = $sourceData[7] 'Visibile to Admins Only' = $sourceData[8] } } } } } } } PROCESS { $__commandArgs = @( "source" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Return Chocolatey package sources #> } Function Register-ChocoSource { [CmdletBinding()] param( [Parameter(Mandatory=$true)] [string]$Name, [Parameter(Mandatory=$true)] [string]$Location ) BEGIN { $__PARAMETERMAP = @{ Name = @{ OriginalName = '--name='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } Location = @{ OriginalName = '--source='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ( $output ) } } } } PROCESS { $__commandArgs = @( "source" "add" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Register a new Chocolatey package source .PARAMETER Name Source Name .PARAMETER Location Source Location #> } Function Unregister-ChocoSource { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string]$Name ) BEGIN { $__PARAMETERMAP = @{ Name = @{ OriginalName = '--name='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ( $output ) } } } } PROCESS { $__commandArgs = @( "source" "remove" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Unregister an existing Chocolatey package source .PARAMETER Name Source Name #> } Function Install-ChocoPackage { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Name, [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Version, [Parameter()] [switch]$ParamsGlobal, [Parameter()] [string]$Parameters, [Parameter()] [switch]$ArgsGlobal, [Parameter()] [string]$InstallArguments, [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Source, [Parameter()] [switch]$Force, [Parameter()] [switch]$PreRelease ) BEGIN { $__PARAMETERMAP = @{ Name = @{ OriginalName = ''; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $False } Version = @{ OriginalName = '--version='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } ParamsGlobal = @{ OriginalName = '--params-global'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } Parameters = @{ OriginalName = '--parameters='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } ArgsGlobal = @{ OriginalName = '--args-global'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } InstallArguments = @{ OriginalName = '--install-arguments='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } Source = @{ OriginalName = '--source='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } Force = @{ OriginalName = '--force'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } PreRelease = @{ OriginalName = '--pre'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ($output) if ($output) { $failures = ($output -match 'Chocolatey .+ packages failed\.') if ($failures) { Write-Error ($output -join "`r`n") } else { $packageRegex = "^(?<name>[\S]+)[\|\s]v(?<version>[\S]+)" $packageReportRegex="^[0-9]*(\s*)(packages installed)" $output | ForEach-Object { if (($_ -match $packageRegex) -and ($_ -notmatch $packageReportRegex) -and ($_ -notmatch 'already installed') -and $Matches.name -and $Matches.version) { [pscustomobject]@{ Name = $Matches.name Version = $Matches.version } } } } } } } } } PROCESS { $__commandArgs = @( "install" "--no-progress" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Install a new package with Chocolatey .PARAMETER Name Package Name .PARAMETER Version Package version .PARAMETER ParamsGlobal Apply package parameters to dependencies .PARAMETER Parameters Parameters to pass to the package .PARAMETER ArgsGlobal Apply package arguments to dependencies .PARAMETER InstallArguments Parameters to pass to the package .PARAMETER Source Package Source .PARAMETER Force Force the operation .PARAMETER PreRelease Include prerelease packages #> } Function Get-ChocoPackage { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Name, [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Version, [Parameter()] [switch]$AllVersions, [Parameter()] [switch]$LocalOnly, [Parameter()] [switch]$Exact, [Parameter()] [string]$Source, [Parameter()] [switch]$PreRelease ) BEGIN { $__PARAMETERMAP = @{ Name = @{ OriginalName = ''; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $False } Version = @{ OriginalName = '--version='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } AllVersions = @{ OriginalName = '--all-versions'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } LocalOnly = @{ OriginalName = '--local-only'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } Exact = @{ OriginalName = '--exact'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } Source = @{ OriginalName = '--source='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } PreRelease = @{ OriginalName = '--pre'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ( $output ) $output | ForEach-Object { $Name,$version = $_ -split '\|' if ( -not [string]::IsNullOrEmpty($name)) { [pscustomobject]@{ Name = $Name Version = $version } } } } } } } PROCESS { $__commandArgs = @( "search" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Get a list of installed or available Chocolatey packages .PARAMETER Name Package Name .PARAMETER Version Package version .PARAMETER AllVersions All Versions .PARAMETER LocalOnly Local Packages Only .PARAMETER Exact Search by exact package name .PARAMETER Source Package Source .PARAMETER PreRelease Include prerelease packages #> } Function Uninstall-ChocoPackage { [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Name, [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Version, [Parameter()] [switch]$Force, [Parameter()] [switch]$RemoveDependencies ) BEGIN { $__PARAMETERMAP = @{ Name = @{ OriginalName = ''; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $False } Version = @{ OriginalName = '--version='; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [string]; NoGap = $True } Force = @{ OriginalName = '--force'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } RemoveDependencies = @{ OriginalName = '--remove-dependencies'; OriginalPosition = '0'; Position = '2147483647'; ParameterType = [switch]; NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { param ($output) if ($output) { $failures = ($output -match 'Chocolatey .+ packages failed\.') if ($failures) { Write-Error ($output -join "`r`n") } else { $packageRegex = "^(?<name>[\S]+)[\|\s]v(?<version>[\S]+)" $packageReportRegex="^[0-9]*(\s*)(packages installed)" $output | ForEach-Object { if (($_ -match $packageRegex) -and ($_ -notmatch $packageReportRegex) -and ($_ -notmatch 'already installed') -and $Matches.name -and $Matches.version) { [pscustomobject]@{ Name = $Matches.name Version = $Matches.version } } } } } } } } } PROCESS { $__commandArgs = @( "uninstall" "--limit-output" "--yes" ) $__boundparms = $PSBoundParameters $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $PSBoundParameters[$_.Name]}).ForEach({$PSBoundParameters[$_.Name] = [switch]::new($false)}) if ($PSBoundParameters["Debug"]){wait-debugger} foreach ($paramName in $PSBoundParameters.Keys|Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $PSBoundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ( $value -is [switch] ) { $__commandArgs += if ( $value.IsPresent ) { $param.OriginalName } else { $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $__commandArgs += "{0}""{1}""" -f $param.OriginalName, $value } else { $__commandArgs += $param.OriginalName; $__commandArgs += $value |Foreach-Object {$_}} } } $__commandArgs = $__commandArgs|Where-Object {$_} if ($PSBoundParameters["Debug"]){wait-debugger} if ( $PSBoundParameters["Verbose"]) { Write-Verbose -Verbose -Message choco $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("choco")) { if ( $__handlerInfo.StreamOutput ) { & "choco" $__commandArgs | & $__handler } else { $result = & "choco" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Uninstall an existing package with Chocolatey .PARAMETER Name Package Name .PARAMETER Version Package version .PARAMETER Force Force the operation .PARAMETER RemoveDependencies Remove all dependant packages not depended on by another installed package #> } Export-ModuleMember -Function Get-ChocoSource, Register-ChocoSource, Unregister-ChocoSource, Install-ChocoPackage, Get-ChocoPackage, Uninstall-ChocoPackage |