pastel.psm1
# Module created by Microsoft.PowerShell.Crescendo class PowerShellCustomFunctionAttribute : System.Attribute { [bool]$RequiresElevation [string]$Source PowerShellCustomFunctionAttribute() { $this.RequiresElevation = $false; $this.Source = "Microsoft.PowerShell.Crescendo" } PowerShellCustomFunctionAttribute([bool]$rElevation) { $this.RequiresElevation = $rElevation $this.Source = "Microsoft.PowerShell.Crescendo" } } function Add-PastelLightness { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateRange(0, 1)] [Parameter(ValueFromPipelineByPropertyName=$true)] [decimal]$Amount, [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Amount = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'lighten' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Lighten a color by adding a certain amount to the HSL lightness channel. If the amount is negative, the color will be darkened. .PARAMETER Amount Amount of lightness to add (number between 0.0 and 1.0) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Add-PastelLightness -Amount 0.1 -Color red Increase the saturation of the color red by 10% Original Command: pastel lighten 0.1 red .LINK https://github.com/sharkdp/pastel #> } function Add-PastelSaturation { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateRange(0, 1)] [Parameter(ValueFromPipelineByPropertyName=$true)] [decimal]$Amount, [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Amount = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'saturate' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Increase the saturation of a color by adding a certain amount to the HSL saturation channel. If the amount is negative, the color will be desaturated instead. .PARAMETER Amount Amount of saturation to add (number between 0.0 and 1.0) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Add-PastelSaturation -Amount 0.1 -Color red Increase the saturation of the color red by 10% Original Command: pastel saturate 0.1 red .LINK https://github.com/sharkdp/pastel #> } function ConvertTo-PastelColorBlind { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("prot", "deuter", "trit")] [Parameter()] [PSDefaultValue(Value="prot")] [string]$Type = "prot", [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Type = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False DefaultMissingValue = 'prot' } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'colorblind' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Convert the given color to how it would look to a person with protanopia, deuteranopia, or tritanopia .PARAMETER Type The type of colorblindness that should be simulated (protanopia, deuteranopia, tritanopia) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> ConvertTo-PastelColorBlind -Type prot -Color '#FF0000', '#00FF00', '#0000FF' Simulate 3 colors to the protanopia colorblindness Original Command: pastel colorblind prot #FF0000 #00FF00 #0000FF .LINK https://github.com/sharkdp/pastel #> } function ConvertTo-PastelGrayTone { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'to-gray' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Completely desaturate the given color while preserving the luminance. .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> ConvertTo-PastelGrayTone -Color blue Converts the color blue to a gray tone Original Command: pastel to-gray blue .LINK https://github.com/sharkdp/pastel #> } function Edit-PastelColorProperty { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("lightness", "hue", "chroma", "lab-a", "lab-b", "red", "green", "blue", "hsl-hue", "hsl-saturation", "hsl-lightness")] [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string]$Property, [Alias('Value')] [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [decimal]$NewValue, [Parameter(Position=2,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Property = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } NewValue = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'set' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Set the given property to a specific value .PARAMETER Property The property that should be changed [possible values: lightness, hue, chroma, lab-a, lab-b, red, green, blue, hsl-hue, hsl-saturation, hsl-lightness] .PARAMETER NewValue The new numerical value of the property .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Edit-PastelColorProperty -Property lightness -Value 1 -Color red Increase the lightness of the color red by 1 Original Command: pastel set lightness 1 red .EXAMPLE PS> Edit-PastelColorProperty -Property hue -Value 10 -Color f5ee92 Increases the hue of the color f5ee92 by 10 Original Command: pastel set hue 10 f5ee92 .LINK https://github.com/sharkdp/pastel #> } function Format-PastelColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("rgb", "rgb-float", "hex", "hsl", "hsl-hue", "hsl-saturation", "hsl-lightness", "lch", "lch-lightness", "lch-chroma", "lch-hue", "lab", "lab-a", "lab-b", "luminance", "brightness", "ansi-8bit", "ansi-24bit", "ansi-8bit-escapecode", "ansi-24bit-escapecode", "cmyk", "name")] [Parameter()] [PSDefaultValue(Value="hex")] [string]$Type = "hex", [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Type = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False DefaultMissingValue = 'hex' } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'format' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Convert the given color(s) to a specific format .PARAMETER Type Output format type. Note that the 'ansi-*-escapecode' formats print ansi escape sequences to the terminal that will not be visible unless something else is printed in addition. [default: hex] [possible values: rgb, rgb-float, hex, hsl, hsl-hue, hsl-saturation, hsl-lightness, lch, lch-lightness, lch-chroma, lch-hue, lab, lab-a, lab-b, luminance, brightness, ansi-8bit, ansi-24bit, ansi-8bit-escapecode, ansi-24bit-escapecode, cmyk, name] .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Format-PastelColor -Order hue -Color white black Sort colors by hue Original Command: pastel sort-by hue white black .EXAMPLE PS> Format-PastelColor -Order chroma -Color 0000ff 'rgba(119, 136, 153, 0.5)' Sort 0000ff and rgba(119, 136, 153, 0.5) by chroma Original Command: pastel sort-by chroma 0000ff --unique rgba(119, 136, 153, 0.5) .EXAMPLE PS> Format-PastelColor -Order luminance -Color red, blue, green Sort red blue and green by luminance Original Command: pastel sort-by luminance red blue green .LINK https://github.com/sharkdp/pastel #> } function Get-PastelColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Color = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'color' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Show and display some information about the given color(s). .PARAMETER Color Show and display some information about the given color(s). Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Get-PastelColor -Color blue Show and display some information about the given color(s) Original Command: pastel color blue .LINK https://github.com/sharkdp/pastel #> } function Get-PastelColorList { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("brightness", "luminance", "hue", "chroma", "random")] [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [PSDefaultValue(Value="hue")] [string]$Sort = "hue" ) BEGIN { $__PARAMETERMAP = @{ Sort = @{ OriginalName = '--sort' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False DefaultMissingValue = 'hue' } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'list' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Show a list of available color names .PARAMETER Sort Sort order [default: hue] [possible values: brightness, luminance, hue, chroma, random] .EXAMPLE PS> Get-PastelColorList Shows a list of available color names Original Command: pastel list .EXAMPLE PS> Get-PastelColorList -Sort hue Shows a list of available color names sorted by hue Original Command: pastel list --sort hue .LINK https://github.com/sharkdp/pastel #> } function Get-PastelComplementColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Color = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'complement' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Compute the complementary color by rotating the HSL hue channel by 180°. .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Get-PastelComplementColor -Color blue Get the complementary color of blue Original Command: pastel complement blue .LINK https://github.com/sharkdp/pastel #> } function Get-PastelDistinctColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("CIEDE2000", "CIE76")] [Parameter(ValueFromPipelineByPropertyName=$true)] [string]$Metric, [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [int]$Count, [Parameter(Position=2,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Color ) BEGIN { $__PARAMETERMAP = @{ Metric = @{ OriginalName = '--metric' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Count = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'int' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'distinct' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Generate a set of visually distinct colors by maximizing the perceived color difference between pairs of colors. The default parameters for the optimization procedure (simulated annealing) should work fine for up to 10-20 colors. .PARAMETER Metric Distance metric to compute mutual color distances. The CIEDE2000 is more accurate, but also much slower. .PARAMETER Count Number of distinct colors in the set. Default is 10. .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Get-PastelDistinctColor Generates a list of distinct colors Original Command: pastel distinct .EXAMPLE PS> Get-PastelDistinctColor -Color lightslategray -Count 5 Generate a list of 5 vivid colors Original Command: pastel distinct --color lightslategray --count 5 .LINK https://github.com/sharkdp/pastel #> } function Get-PastelTextColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Color = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'textcolor' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Return a readable foreground text color (either black or white) for a given background color. This can also be used in the opposite way, i.e. to create a background color for a given text color. .PARAMETER Color Show and display some information about the given color(s). Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Get-PastelTextColor -Color blue Get a readable text color for the given blue background color Original Command: pastel textcolor blue .LINK https://github.com/sharkdp/pastel #> } function Invoke-PastelColorMix { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [decimal]$fraction, [ValidateSet("Lab", "LCh", "RGB", "HSL")] [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [string]$ColorSpace, [Parameter(Position=2,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Color1, [Parameter(Position=3,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Color2 ) BEGIN { $__PARAMETERMAP = @{ fraction = @{ OriginalName = '--fraction' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } ColorSpace = @{ OriginalName = '--colorspace' OriginalPosition = '1' Position = '1' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Color1 = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Color2 = @{ OriginalName = '' OriginalPosition = '3' Position = '3' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'mix' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Create new colors by interpolating between two colors in the given colorspace .PARAMETER fraction The number between 0.0 and 1.0 determining how much to mix in from the base color. Default is 0.5 .PARAMETER ColorSpace The colorspace in which to interpolate [default: Lab] [possible values: Lab, LCh, RGB, HSL] .PARAMETER Color1 Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .PARAMETER Color2 Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Invoke-PastelColorMix -ColorSpace RGB -Color1 red -Color2 blue Generate a sequence of colors that interpolates between ffffcc and fd8d3c. Original Command: pastel mix --colorspace=RGB red blue .EXAMPLE PS> Invoke-PastelColorMix -ColorSpace RGB ffffcc fd8d3c Generate a sequence of colors that interpolates between ffffcc and fd8d3c. Original Command: pastel gradient --colorspace=RGB ffffcc fd8d3c .LINK https://github.com/sharkdp/pastel #> } function Invoke-PastelColorSort { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [switch]$Reverse, [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [switch]$Unique, [ValidateSet("brightness", "luminance", "hue", "chroma", "random")] [Parameter(Position=2,ValueFromPipelineByPropertyName=$true)] [PSDefaultValue(Value="hue")] [string]$OrderBy = "hue", [Parameter(Position=3,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Reverse = @{ OriginalName = '--reverse' OriginalPosition = '0' Position = '2147483647' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } Unique = @{ OriginalName = '--unique' OriginalPosition = '1' Position = '1' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } OrderBy = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False DefaultMissingValue = 'hue' } Color = @{ OriginalName = '' OriginalPosition = '3' Position = '3' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'sort-by' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Sort colors by the given property .PARAMETER Reverse Reverse the sort order .PARAMETER Unique Remove duplicate colors (equality is determined via RGB values) .PARAMETER OrderBy Sort order [default: hue] [possible values: brightness, luminance, hue, chroma, random] .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Invoke-PastelColorSort -Order hue -Color white black Sort colors by hue Original Command: pastel sort-by hue white black .EXAMPLE PS> Invoke-PastelColorSort -Order chroma -Color 0000ff 'rgba(119, 136, 153, 0.5)' Sort 0000ff and rgba(119, 136, 153, 0.5) by chroma Original Command: pastel sort-by chroma 0000ff --unique rgba(119, 136, 153, 0.5) .EXAMPLE PS> Invoke-PastelColorSort -Order luminance -Color red, blue, green Sort red blue and green by luminance Original Command: pastel sort-by luminance red blue green .LINK https://github.com/sharkdp/pastel #> } function Invoke-PastelRotateColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Alias('Value')] [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [decimal]$Degree, [Parameter(Position=2,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Degree = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'rotate' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Rotate the HSL hue channel of a color by the specified angle (in degrees). A rotation by 180° returns the complementary color. A rotation by 360° returns to the original color. .PARAMETER Degree Angle by which to rotate (in degrees, can be negative) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Invoke-PastelRotateColor -Degree 180 -Color red Rotate the hue of the color red by 180° Original Command: pastel rotate 180 red .LINK https://github.com/sharkdp/pastel #> } function New-PastelGrayTone { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateRange(0, 1)] [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [decimal]$Lightness ) BEGIN { $__PARAMETERMAP = @{ Lightness = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'gray' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Create a gray tone from a given lightness value. .PARAMETER Lightness Lightness of the created gray tone (number between 0.0 and 1.0) .EXAMPLE PS> New-PastelGrayTone -Lightness 0.1 Create a gray tone with a lightness of 0.1 Original Command: pastel gray 0.1 .EXAMPLE PS> New-PastelGrayTone -Lightness 1.0 Create a gray tone with a lightness of 1.0 Original Command: pastel gray 1 .LINK https://github.com/sharkdp/pastel #> } function New-PastelRandomColor { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateSet("vivid", "rgb", "gray", "lch_hue")] [Parameter(ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Strategy, [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [int]$Number ) BEGIN { $__PARAMETERMAP = @{ Strategy = @{ OriginalName = '--strategy' OriginalPosition = '0' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Number = @{ OriginalName = '--number' OriginalPosition = '1' Position = '1' ParameterType = 'int' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'random' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Generate a list of random colors .PARAMETER Strategy Randomization strategy: vivid: random hue, limited saturation and lightness values rgb: samples uniformly in RGB space gray: random gray tone (uniform) lch_hue: random hue, fixed lightness and chroma .PARAMETER Number Number of colors to generate. Default is 10. .EXAMPLE PS> New-PastelRandomColor Generate a list of random colors Original Command: pastel random .EXAMPLE PS> New-PastelRandomColor -Strategy vivid -Number 5 Generate a list of 5 vivid colors Original Command: pastel random --strategy vivid --number 5 .LINK https://github.com/sharkdp/pastel #> } function Remove-PastelLightness { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateRange(0, 1)] [Parameter(ValueFromPipelineByPropertyName=$true)] [decimal]$Amount, [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Amount = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'darken' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Darken a color by subtracting a certain amount from the lightness channel. If the amount is negative, the color will be lightened. .PARAMETER Amount Amount of lightness to subtract (number between 0.0 and 1.0) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Remove-PastelLightness -Amount 0.1 -Color red Darkens of the color red by 10% Original Command: pastel darken 0.1 red .LINK https://github.com/sharkdp/pastel #> } function Remove-PastelSaturation { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [ValidateRange(0, 1)] [Parameter(ValueFromPipelineByPropertyName=$true)] [decimal]$Amount, [Parameter(Position=1,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string[]]$Color ) BEGIN { $__PARAMETERMAP = @{ Amount = @{ OriginalName = '' OriginalPosition = '0' Position = '2147483647' ParameterType = 'decimal' ApplyToExecutable = $False NoGap = $False } Color = @{ OriginalName = '' OriginalPosition = '1' Position = '1' ParameterType = 'string[]' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'saturate' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Decrease the saturation of a color by subtracting a certain amount from the HSL saturation channel. If the amount is negative, the color will be saturated instead. .PARAMETER Amount Amount of saturation to subtract (number between 0.0 and 1.0) .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Remove-PastelSaturation -Amount 0.1 -Color red Increase the saturation of the color red by 10% Original Command: pastel desaturate 0.1 red .LINK https://github.com/sharkdp/pastel #> } function Show-PastelGradient { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true)] [int]$Number, [ValidateSet("Lab", "LCh", "RGB", "HSL")] [Parameter(Position=1,ValueFromPipelineByPropertyName=$true)] [string]$ColorSpace, [Parameter(Position=2,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Color1, [Parameter(Position=3,ValueFromPipeline=$true,ValueFromPipelineByPropertyName=$true)] [string]$Color2 ) BEGIN { $__PARAMETERMAP = @{ Number = @{ OriginalName = '--number' OriginalPosition = '0' Position = '2147483647' ParameterType = 'int' ApplyToExecutable = $False NoGap = $False } ColorSpace = @{ OriginalName = '--colorspace' OriginalPosition = '1' Position = '1' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Color1 = @{ OriginalName = '' OriginalPosition = '2' Position = '2' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Color2 = @{ OriginalName = '' OriginalPosition = '3' Position = '3' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'gradient' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Generate a sequence of colors that interpolates between the specified colors. The interpolation is performed in the specified color space. .PARAMETER Number Number of colors to generate .PARAMETER ColorSpace The colorspace in which to interpolate [default: Lab] [possible values: Lab, LCh, RGB, HSL] .PARAMETER Color1 Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .PARAMETER Color2 Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .EXAMPLE PS> Show-PastelGradient -Number 5 -ColorSpace HSL -Color1 '#ffffcc' -Color2 '#fd8d3c' Generate a sequence of colors that interpolates between ffffcc and fd8d3c. Original Command: pastel gradient --colorspace=HSL ffffcc fd8d3c .EXAMPLE PS> Show-PastelGradient -ColorSpace RGB ffffcc fd8d3c Generate a sequence of colors that interpolates between ffffcc and fd8d3c. Original Command: pastel gradient --colorspace=RGB ffffcc fd8d3c .LINK https://github.com/sharkdp/pastel #> } function Write-PastelColoredText { [PowerShellCustomFunctionAttribute(RequiresElevation=$False)] [CmdletBinding()] param( [Parameter(ValueFromPipelineByPropertyName=$true,Mandatory=$true)] [string]$Color, [Parameter(Position=1,ValueFromPipeline=$true)] [string]$Text, [Parameter(Position=2,ValueFromPipelineByPropertyName=$true)] [string]$BackgroundColor, [Parameter(Position=3,ValueFromPipelineByPropertyName=$true)] [switch]$Bold, [Parameter(Position=4,ValueFromPipelineByPropertyName=$true)] [switch]$Underline, [Parameter(Position=5,ValueFromPipelineByPropertyName=$true)] [switch]$Italic, [Parameter(Position=6,ValueFromPipelineByPropertyName=$true)] [switch]$NoNewLine ) BEGIN { $__PARAMETERMAP = @{ Color = @{ OriginalName = '' OriginalPosition = '5' Position = '2147483647' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Text = @{ OriginalName = '' OriginalPosition = '6' Position = '1' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } BackgroundColor = @{ OriginalName = '--on' OriginalPosition = '0' Position = '2' ParameterType = 'string' ApplyToExecutable = $False NoGap = $False } Bold = @{ OriginalName = '--bold' OriginalPosition = '1' Position = '3' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } Underline = @{ OriginalName = '--underline' OriginalPosition = '2' Position = '4' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } Italic = @{ OriginalName = '--italic' OriginalPosition = '3' Position = '5' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } NoNewLine = @{ OriginalName = '--no-newline' OriginalPosition = '4' Position = '6' ParameterType = 'switch' ApplyToExecutable = $False NoGap = $False } } $__outputHandlers = @{ Default = @{ StreamOutput = $False; Handler = { $true } } } } PROCESS { $__boundParameters = $PSBoundParameters $__defaultValueParameters = $PSCmdlet.MyInvocation.MyCommand.Parameters.Values.Where({$_.Attributes.Where({$_.TypeId.Name -eq "PSDefaultValueAttribute"})}).Name $__defaultValueParameters.Where({ !$__boundParameters["$_"] }).ForEach({$__boundParameters["$_"] = get-variable -value $_}) $__commandArgs = @() $MyInvocation.MyCommand.Parameters.Values.Where({$_.SwitchParameter -and $_.Name -notmatch "Debug|Whatif|Confirm|Verbose" -and ! $__boundParameters[$_.Name]}).ForEach({$__boundParameters[$_.Name] = [switch]::new($false)}) if ($__boundParameters["Debug"]){wait-debugger} $__commandArgs += 'paint' foreach ($paramName in $__boundParameters.Keys| Where-Object {!$__PARAMETERMAP[$_].ApplyToExecutable}| Sort-Object {$__PARAMETERMAP[$_].OriginalPosition}) { $value = $__boundParameters[$paramName] $param = $__PARAMETERMAP[$paramName] if ($param) { if ($value -is [switch]) { if ($value.IsPresent) { if ($param.OriginalName) { $__commandArgs += $param.OriginalName } } elseif ($param.DefaultMissingValue) { $__commandArgs += $param.DefaultMissingValue } } elseif ( $param.NoGap ) { $pFmt = "{0}{1}" if($value -match "\s") { $pFmt = "{0}""{1}""" } $__commandArgs += $pFmt -f $param.OriginalName, $value } else { if($param.OriginalName) { $__commandArgs += $param.OriginalName } $__commandArgs += $value | Foreach-Object {$_} } } } $__commandArgs = $__commandArgs | Where-Object {$_ -ne $null} if ($__boundParameters["Debug"]){wait-debugger} if ( $__boundParameters["Verbose"]) { Write-Verbose -Verbose -Message pastel $__commandArgs | Write-Verbose -Verbose } $__handlerInfo = $__outputHandlers[$PSCmdlet.ParameterSetName] if (! $__handlerInfo ) { $__handlerInfo = $__outputHandlers["Default"] # Guaranteed to be present } $__handler = $__handlerInfo.Handler if ( $PSCmdlet.ShouldProcess("pastel $__commandArgs")) { # check for the application and throw if it cannot be found if ( -not (Get-Command -ErrorAction Ignore "pastel")) { throw "Cannot find executable 'pastel'" } if ( $__handlerInfo.StreamOutput ) { & "pastel" $__commandArgs | & $__handler } elseif ($__handlerInfo.Handler) { & "pastel" $__commandArgs } else { $result = & "pastel" $__commandArgs & $__handler $result } } } # end PROCESS <# .DESCRIPTION Print colored text using ANSI escape sequences .PARAMETER Color Colors can be specified in many different formats, such as #RRGGBB, RRGGBB, #RGB, 'rgb(…, …, …)', 'hsl(…, …, …)', 'gray(…)' or simply by the name of the color. The identifier '-' can be used to read a single color from standard input. Also, the special identifier 'pick' can be used to run an external color picker to choose a color. If no color argument is specified, colors will be read from standard input. Examples (all of these specify the same color): - lightslategray - '#778899' - 778899 - 789 - 'rgb(119, 136, 153)' - '119,136,153' - 'hsl(210, 14.3%, 53.3%)' Alpha transparency is also supported: - '#77889980' - 'rgba(119, 136, 153, 0.5)' - 'hsla(210, 14.3%, 53.3%, 50%)' .PARAMETER Text The text to be printed in color. If no argument is given, the input is read from STDIN .PARAMETER BackgroundColor Use the specified background color .PARAMETER Bold Print the text in bold face .PARAMETER Underline Draw a line below the text .PARAMETER Italic Print the text in italic font .PARAMETER NoNewLine Do not print a trailing newline character .EXAMPLE PS> Write-PastelColoredText -Color blue -Text sup -BackgroundColor white Prints 'sup' in blue on a white background Original Command: pastel paint blue --on white sup .EXAMPLE PS> Write-PastelColoredText -Color blue -Text sup -BackgroundColor white -Underline -Bold -Italic -Verbose Prints an underlined, bold and italic 'sup' in blue on a white background Original Command: pastel paint 'rgb(0, 128, 0)' --on white --underline --bold --italic sup .EXAMPLE PS> Write-PastelColoredText -Color 'rgb(0, 128, 0)' -Text sup -BackgroundColor white -Underline -Bold -Italic -Verbose Prints an underlined, bold and italic 'sup' in rgb(0, 128, 0) on a white background Original Command: pastel paint 'rgb(0, 128, 0)' --on white --underline --bold --italic sup .LINK https://github.com/sharkdp/pastel #> } Set-Alias -Name 'Get-PastelRandomColor' -Value 'New-PastelRandomColor' if (-not (Get-Command -ErrorAction Ignore "pastel")) { if ($isLinux) { $Env:PATH += ":$PSScriptRoot/bin/linux" chmod +x "$PSScriptRoot/bin/linux/pastel" } elseif ($isMacOS) { $Env:PATH += ":$PSScriptRoot/bin/mac" chmod +x "$PSScriptRoot/bin/mac/pastel" } else { $Env:PATH += ";$PSScriptRoot\bin\win" } } if (-not (Get-Command -ErrorAction Ignore "gpick")) { if ($isLinux) { if ($Env:PATH -notmatch "$PSScriptRoot/bin/linux") { $Env:PATH += ":$PSScriptRoot/bin/linux" } chmod +x "$PSScriptRoot/bin/linux/Pipette" } elseif ($isMacOS) { if ($Env:PATH -notmatch "$PSScriptRoot/bin/mac") { $Env:PATH += ":$PSScriptRoot/bin/mac" } chmod +x -R "$PSScriptRoot/bin/mac/gpick.app" } else { $newpath = Join-Path -Path $PSScriptRoot -ChildPath bin $newpath = Join-Path -Path $newpath -ChildPath win if ($Env:PATH -notmatch $newpath) { $Env:PATH += ";$PSScriptRoot\bin\win" } } } |