diff --git a/examples/cli/CLI.ps1 b/examples/cli/CLI.ps1 new file mode 100644 index 0000000..b319f71 --- /dev/null +++ b/examples/cli/CLI.ps1 @@ -0,0 +1,67 @@ +param( + [switch]$interactive, + [Parameter(Mandatory)] + [String]$kind, + [String[]]$script = @() +) + +Import-Module Voicemeeter + +function get-value { + param([object]$vmr, [string]$line) + try { + $retval = $vmr.Getter($line) + } + catch { + $retval = $vmr.Getter_String($line) + } + $retval +} + +function msgHandler { + param([object]$vmr, [string]$line) + $line + " passed to handler" | Write-Debug + if ($line[0] -eq "!") { + $retval = get-value -vmr $vmr -line $line.substring(1) + $vmr.Setter($line.substring(1), 1 - $retval) + } + elseif ($line.Contains("=")) { + "Setting value $line" | Write-Debug + $vmr.SendText($line) + } + else { + "Getting value $line" | Write-Debug + $retval = get-value -vmr $vmr -line $line + $line + " = " + $retval | Write-Host + } +} + +function read-hostuntilflag { + param([object]$vmr) + while (($line = Read-Host) -cne [string]::Empty) { msgHandler -vmr $vmr -line $line } +} + + +function main { + [object]$vmr + + try { + switch ($kind) { + "basic" { $vmr = Get-RemoteBasic } + "banana" { $vmr = Get-RemoteBanana } + "potato" { $vmr = Get-RemotePotato } + } + + if ($interactive) { + "Press to exit" | Write-Host + read-hostuntilflag -vmr $vmr + return + } + $script | ForEach-Object { + msgHandler -vmr $vmr -line $_ + } + } + finally { $vmr.Logout() } +} + +if ($MyInvocation.InvocationName -ne '.') { main }