kitchensink.ps1

Import-Module './pwsh-prelude.psm1'

$Space = ' '
$Indent = 4
$LabelParameters = @{
  Indent = $Indent
  NewLine = $true
}
$ResultLabelParameters = @{
  Color = 'Green'
  Indent = $Indent
  NewLine = $true
}

Write-Title ' Kitchen Sink ' -SubText '#allthethings' -Yellow

$Space

$Fullname = Invoke-Input 'Full Name?' -Indent $Indent
$Username = Invoke-Input 'Username?' -MaxLength 10 -Indent $Indent
$Age = Invoke-Input 'Age?' -Number -Indent $Indent
$Pass = Invoke-Input 'Password?' -Secret -Indent $Indent
$FavoriteSaiyajin = Invoke-Input 'Favorite Saiya-jin?' -Autocomplete -Indent $Indent -Choices `
@(
  'Goku'
  'Gohan'
  'Goten'
  'Vegeta'
  'Trunks'
)

'Favorite number?' | Write-Label @LabelParameters
$FavoriteNumberWord = 'one','two','three' | Invoke-Menu -SingleSelect -Indent $Indent

'Known mathematicians?' | Write-Label @labelParameters
$Choice = 'Godel','Gauss','Cantor' | Invoke-Menu -MultiSelect -Indent $Indent

'{{#red Red}}, {{#white White}}, or {{#blue Blue}}?' | Write-Label @LabelParameters
$FavoriteColor = 'red','white','blue' | Invoke-Menu -Indent $Indent

'Favorite number between 1 and 100?' | Write-Label @LabelParameters
$Space
$FavoriteNumber = 1..100 | Invoke-Menu -Limit 10 -Indent 6

$Space

'Results' | Write-Title -Magenta -TextColor White
$Fullname | Write-Label @ResultLabelParameters
$Username | Write-Label @ResultLabelParameters
$Age | Write-Label @ResultLabelParameters
$Pass | Write-Label @ResultLabelParameters
$FavoriteSaiyajin | Write-Label @ResultLabelParameters
$FavoriteNumberWord | Write-Label @ResultLabelParameters
(Join-StringsWithGrammar $Choice) | Write-Label @ResultLabelParameters
$FavoriteColor | Write-Label @ResultLabelParameters
$FavoriteNumber | Write-Label @ResultLabelParameters

$Space

'Show bar charts?' | Write-Label -NewLine
$Choice = 'no','yes' | Invoke-Menu
if ($Choice -eq 'yes') {
  'Bar Charts' | Write-Title -Blue
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart -Alternate
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart -ShowValues
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart -ShowValues -Alternate
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart -ShowValues -WithColor
  Get-ChildItem -File | Invoke-Reduce -FileInfo | Show-BarChart -ShowValues -WithColor -Alternate
}