diff options
Diffstat (limited to 'scripts/deploy/completions/powershell.ps1')
| -rw-r--r-- | scripts/deploy/completions/powershell.ps1 | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/scripts/deploy/completions/powershell.ps1 b/scripts/deploy/completions/powershell.ps1 new file mode 100644 index 0000000..0c3cddc --- /dev/null +++ b/scripts/deploy/completions/powershell.ps1 @@ -0,0 +1,42 @@ +Register-ArgumentCompleter -CommandName jvn -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + + $line = $commandAst.ToString() + $commandName = if ($commandAst.CommandElements.Count -gt 0) { + $commandAst.CommandElements[0].Value + } else { "" } + + $words = @() + $currentIndex = 0 + $parser = [System.Management.Automation.PSParser] + $tokens = $parser::Tokenize($line, [ref]$null) + + foreach ($token in $tokens) { + if ($token.Type -in 'CommandArgument', 'CommandParameter') { + $words += $token.Content + } + } + + $args = @( + "-f", $line + "-C", $cursorPosition.ToString() + "-w", $wordToComplete + "-p", if ($words.Count -gt 1) { $words[-2] } else { "" } + "-c", $commandName + "-i", ($words.Count - 1).ToString() + "-a", $words + ) + + $suggestions = jvn_comp $args 2>$null + + if ($suggestions) { + $suggestions | ForEach-Object { + if ($_ -eq "_file_") { + $completionType = 'ProviderItem' + } else { + $completionType = 'ParameterValue' + } + [System.Management.Automation.CompletionResult]::new($_, $_, $completionType, $_) + } + } +} |
