diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-01-07 15:46:40 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-01-07 15:46:40 +0800 |
| commit | e580d5db3cc4146a4e3006492f7ced26b8e8072c (patch) | |
| tree | aa56e423b25982f9f7422114f81b362ef5f034d9 /scripts/deploy/completions/powershell/completion_jvv.ps1 | |
| parent | 197363c9ed2b285db220988590dfc13edcbbad41 (diff) | |
Move deployment scripts to deploy subdirectory
Diffstat (limited to 'scripts/deploy/completions/powershell/completion_jvv.ps1')
| -rw-r--r-- | scripts/deploy/completions/powershell/completion_jvv.ps1 | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/scripts/deploy/completions/powershell/completion_jvv.ps1 b/scripts/deploy/completions/powershell/completion_jvv.ps1 new file mode 100644 index 0000000..fa773c0 --- /dev/null +++ b/scripts/deploy/completions/powershell/completion_jvv.ps1 @@ -0,0 +1,67 @@ +# The JustEnoughVCS CommandLine Completion + +Register-ArgumentCompleter -Native -CommandName jvv -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + + $words = $commandAst.CommandElements | ForEach-Object { $_.ToString() } + $currentIndex = $words.IndexOf($wordToComplete) + if ($currentIndex -lt 0) { $currentIndex = $words.Count } + + $cmd = "jvv" + $subcmd = if ($words.Count -gt 1) { $words[1] } else { $null } + $subsubcmd = if ($words.Count -gt 2) { $words[2] } else { $null } + + # Base commands + $baseCommands = @("create", "init", "here", "member", "service", "listen", "members", "-c", "-i", "-H", "-m", "-l", "-M") + + # Member subcommands + $memberCommands = @("register", "remove", "list", "help", "+", "-", "ls") + + # Service subcommands + $serviceCommands = @("listen", "help") + + # Completion for main command + if ($currentIndex -eq 1) { + return $baseCommands | Where-Object { $_ -like "$wordToComplete*" } + } + + # Completion for member command + if ($subcmd -eq "member" -or $subcmd -eq "-m") { + if ($currentIndex -eq 2) { + return $memberCommands | Where-Object { $_ -like "$wordToComplete*" } + } + + switch ($subsubcmd) { + { @("remove", "-") -contains $_ } { + if ($currentIndex -eq 3) { + $members = & $cmd member list --raw 2>$null + return $members | Where-Object { $_ -like "$wordToComplete*" } + } + } + } + return @() + } + + # Completion for service command + if ($subcmd -eq "service") { + if ($currentIndex -eq 2) { + return $serviceCommands | Where-Object { $_ -like "$wordToComplete*" } + } + return @() + } + + # Aliases completion + switch ($subcmd) { + "-m" { + if ($currentIndex -eq 2) { + return $memberCommands | Where-Object { $_ -like "$wordToComplete*" } + } + } + { @("listen", "-l", "members", "-M") -contains $_ } { + # These commands have no arguments to complete + return @() + } + } + + return @() +} |
