-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathOptions.ps1
58 lines (53 loc) · 1.32 KB
/
Options.ps1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
$PromptOptions = @{}
function Find-PromptOption {
return ($args | ForEach-Object { $keys = $PromptOptions.Keys } {
$current = ([string]$_).ToLower()
$keys = $keys.Where({
$_.ToLower().Contains($current)
})
} { $keys } | ForEach-Object { $result = @{} } {
$result[$_] = $PromptOptions[$_]
} { $result })
}
function Get-PromptOption {
param (
[string]$Name,
$FallbackValue
)
if ($Name.Length -gt 0) {
if ($PromptOptions.ContainsKey($Name)) {
return $PromptOptions[$Name]
}
if ($null -ne $FallbackValue) {
$PromptOptions[$Name] = $FallbackValue
return $FallbackValue
}
} else {
return $PromptOptions
}
}
function Set-PromptOption {
param (
[parameter(Mandatory=$true)]
[string]$Name,
[parameter(Mandatory=$true)]
$Value
)
$PromptOptions[$Name] = $Value
}
function Remove-PromptOption {
param (
[parameter(Mandatory=$true)]
[string]$Name
)
if (-not $PromptOptions.ContainsKey($Name)) {
throw "Option '$Name' does not exist."
}
$PromptOptions.Remove($Name)
}
Export-ModuleMember -Function @(
'Find-PromptOption',
'Get-PromptOption',
'Set-PromptOption',
'Remove-PromptOption'
)