summaryrefslogtreecommitdiff
path: root/scripts/deploy/completions/powershell
diff options
context:
space:
mode:
author魏曹先生 <1992414357@qq.com>2026-03-14 22:12:30 +0800
committer魏曹先生 <1992414357@qq.com>2026-03-14 22:40:12 +0800
commit72f80ea51f25256d0c463c2f3dc3d8670cfc4634 (patch)
treeb200a3ab1a4c718034458863570a064b52bafdcd /scripts/deploy/completions/powershell
parent54b5567d6f1b1adaa6ada6a26faba0c5c492b7f3 (diff)
Add shell completions for new jvn CLI
Diffstat (limited to 'scripts/deploy/completions/powershell')
-rw-r--r--scripts/deploy/completions/powershell/completion_jv.ps1250
-rw-r--r--scripts/deploy/completions/powershell/completion_jvv.ps167
2 files changed, 0 insertions, 317 deletions
diff --git a/scripts/deploy/completions/powershell/completion_jv.ps1 b/scripts/deploy/completions/powershell/completion_jv.ps1
deleted file mode 100644
index 84ba01a..0000000
--- a/scripts/deploy/completions/powershell/completion_jv.ps1
+++ /dev/null
@@ -1,250 +0,0 @@
-# The JustEnoughVCS CommandLine Completion
-
-Register-ArgumentCompleter -Native -CommandName jv -ScriptBlock {
- param($wordToComplete, $commandAst, $cursorPosition)
-
- $words = $commandAst.CommandElements | ForEach-Object { $_.ToString() }
- $currentIndex = $words.IndexOf($wordToComplete)
- if ($currentIndex -lt 0) { $currentIndex = $words.Count }
-
- $cmd = "jv"
- $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", "direct", "unstain", "account", "update",
- "sheet", "status", "here", "move", "mv", "docs", "exit", "use", "sheets", "accounts",
- "as", "make", "drop", "track", "hold", "throw", "login",
- "jump", "align", "info", "share"
- )
-
- # Account subcommands
- $accountCommands = @("list", "as", "add", "remove", "movekey", "mvkey", "mvk", "genpub", "help")
-
- # Sheet subcommands
- $sheetCommands = @("list", "use", "exit", "make", "drop", "help", "align")
-
- # Completion for main command
- if ($currentIndex -eq 1) {
- return $baseCommands | Where-Object { $_ -like "$wordToComplete*" }
- }
-
- # Completion for account command
- if ($subcmd -eq "account" -or $subcmd -eq "acc") {
- if ($currentIndex -eq 2) {
- return $accountCommands | Where-Object { $_ -like "$wordToComplete*" }
- }
-
- switch ($subsubcmd) {
- { @("as", "remove", "mvkey", "mvk", "movekey", "genpub") -contains $_ } {
- if ($currentIndex -eq 3) {
- $accounts = & $cmd account list --raw 2>$null
- return $accounts | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($currentIndex -eq 4 -and (@("mvkey", "mvk", "movekey", "genpub") -contains $subsubcmd)) {
- # File completion for key files
- return Get-ChildItem -Name -File -Path "." | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "add" {
- if ($currentIndex -eq 3) {
- # No completion for account name
- return @()
- } elseif ($currentIndex -eq 4 -and $wordToComplete.StartsWith("-")) {
- # Complete --keygen option
- if ("--keygen" -like "$wordToComplete*") {
- return "--keygen"
- }
- }
- }
- { @("-", "rm") -contains $_ } {
- if ($currentIndex -eq 3) {
- $accounts = & $cmd account list --raw 2>$null
- return $accounts | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- }
- return @()
- }
-
- # Completion for sheet command
- if ($subcmd -eq "sheet" -or $subcmd -eq "sh") {
- if ($currentIndex -eq 2) {
- return $sheetCommands | Where-Object { $_ -like "$wordToComplete*" }
- }
-
- switch ($subsubcmd) {
- { @("use", "drop") -contains $_ } {
- if ($currentIndex -eq 3) {
- $sheets = & $cmd sheet list --raw 2>$null
- return $sheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "make" {
- if ($currentIndex -eq 3) {
- $allSheets = & $cmd sheet list --all --raw 2>$null
- return $allSheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "align" {
- if ($currentIndex -eq 3) {
- $alignItems = @("lost", "moved", "erased")
- $unsolvedItems = & $cmd sheet align --unsolved --raw 2>$null
- $completions = $alignItems + $unsolvedItems
- return $completions | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($currentIndex -eq 4) {
- $item = $words[3]
- $alignOperations = @()
- $createdItems = & $cmd sheet align --created --raw 2>$null
-
- if ($item -eq "lost") {
- $alignOperations = @("confirm")
- } elseif ($item -like "lost:*") {
- $alignOperations = @("confirm") + $createdItems
- } elseif ($item -eq "moved" -or $item -like "moved:*") {
- $alignOperations = @("local", "remote", "break")
- } elseif ($item -eq "erased" -or $item -like "erased:*") {
- $alignOperations = @("confirm")
- } else {
- $alignOperations = @("local", "remote", "confirm", "break") + $createdItems
- }
-
- return $alignOperations | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- }
- return @()
- }
-
- # Completion for align command
- if ($subcmd -eq "align") {
- if ($currentIndex -eq 2) {
- $alignItems = @("lost", "moved", "erased")
- $unsolvedItems = & $cmd sheet align --unsolved --raw 2>$null
- $completions = $alignItems + $unsolvedItems
- return $completions | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($currentIndex -eq 3) {
- $item = $words[2]
- $alignOperations = @()
- $createdItems = & $cmd sheet align --created --raw 2>$null
-
- if ($item -eq "lost") {
- $alignOperations = @("confirm")
- } elseif ($item -like "lost:*") {
- $alignOperations = @("confirm") + $createdItems
- } elseif ($item -eq "moved" -or $item -like "moved:*") {
- $alignOperations = @("local", "remote", "break")
- } elseif ($item -eq "erased" -or $item -like "erased:*") {
- $alignOperations = @("confirm")
- } else {
- $alignOperations = @("local", "remote", "confirm", "break") + $createdItems
- }
-
- return $alignOperations | Where-Object { $_ -like "$wordToComplete*" }
- }
- return @()
- }
-
- # Completion for login command
- if ($subcmd -eq "login") {
- if ($currentIndex -eq 2) {
- $accounts = & $cmd account list --raw 2>$null
- return $accounts | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($currentIndex -eq 3) {
- $ipHistory = & $cmd _ip_history 2>$null
- return $ipHistory | Where-Object { $_ -like "$wordToComplete*" }
- }
- return @()
- }
-
- # Completion for direct command
- if ($subcmd -eq "direct") {
- if ($currentIndex -eq 2) {
- $ipHistory = & $cmd _ip_history 2>$null
- return $ipHistory | Where-Object { $_ -like "$wordToComplete*" }
- }
- return @()
- }
-
- # Completion for info command
- if ($subcmd -eq "info") {
- if ($currentIndex -eq 2) {
- # File completion for the file argument
- return Get-ChildItem -Name -File -Path "." | Where-Object { $_ -like "$wordToComplete*" }
- }
- return @()
- }
-
- # Completion for share command
- if ($subcmd -eq "share") {
- if ($currentIndex -eq 2) {
- # First parameter: list, see, jv share list --raw results, or files in current directory
- $staticOptions = @("list", "see")
- $shareList = & $cmd share list --raw 2>$null
- $files = Get-ChildItem -Name -File -Path "." 2>$null
- $completions = $staticOptions + $shareList + $files
- return $completions | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($currentIndex -eq 3) {
- # Second parameter: depends on the first parameter
- $firstParam = $words[2]
- if ($firstParam -eq "list") {
- # list -> nothing
- return @()
- } elseif ($firstParam -eq "see") {
- # see -> jv share list --raw results
- $shareList = & $cmd share list --raw 2>$null
- return $shareList | Where-Object { $_ -like "$wordToComplete*" }
- } elseif ($firstParam -like "*@*") {
- # Contains "@" (shareid) -> show options
- $options = @("--safe", "--overwrite", "--skip", "--reject")
- return $options | Where-Object { $_ -like "$wordToComplete*" }
- } else {
- # Otherwise, assume it's a file -> show jv sheet list --all --raw results
- $allSheets = & $cmd sheet list --all --raw 2>$null
- return $allSheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- # Third parameter: no completion
- return @()
- }
-
- # Aliases completion
- switch ($subcmd) {
- "as" {
- if ($currentIndex -eq 2) {
- $accounts = & $cmd account list --raw 2>$null
- return $accounts | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "use" {
- if ($currentIndex -eq 2) {
- $sheets = & $cmd sheet list --raw 2>$null
- return $sheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "make" {
- if ($currentIndex -eq 2) {
- $allSheets = & $cmd sheet list --all --raw 2>$null
- return $allSheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "drop" {
- if ($currentIndex -eq 2) {
- $sheets = & $cmd sheet list --raw 2>$null
- return $sheets | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- "docs" {
- if ($currentIndex -eq 2) {
- $docs = & $cmd docs list --raw 2>$null
- return $docs | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
- { @("move", "mv", "track", "hold", "throw") -contains $_ } {
- # File completion for file operations
- return Get-ChildItem -Name -File -Path "." | Where-Object { $_ -like "$wordToComplete*" }
- }
- }
-
- return @()
-}
diff --git a/scripts/deploy/completions/powershell/completion_jvv.ps1 b/scripts/deploy/completions/powershell/completion_jvv.ps1
deleted file mode 100644
index fa773c0..0000000
--- a/scripts/deploy/completions/powershell/completion_jvv.ps1
+++ /dev/null
@@ -1,67 +0,0 @@
-# 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 @()
-}