From 1059d878476c231f84ef9d3c2e8bcafaf978bc87 Mon Sep 17 00:00:00 2001 From: salmonik Date: Wed, 13 May 2026 11:27:16 +0200 Subject: Regenerate shell completions and install script fixes - Add hidden completions subcommand to CLI (developer use only) - Regenerate all completion scripts from current CLI structure - Add elvish and powershell completion scripts - install.sh: Fix rsp stop -> rsp stop-daemon, rsp start -> rsp start-daemon - install.sh: Install completions for user's current shell - install.sh: Zsh uses /usr/share/zsh/site-functions/_rsp directly --- completions/rsp.powershell | 280 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 280 insertions(+) create mode 100644 completions/rsp.powershell (limited to 'completions/rsp.powershell') diff --git a/completions/rsp.powershell b/completions/rsp.powershell new file mode 100644 index 0000000..58db681 --- /dev/null +++ b/completions/rsp.powershell @@ -0,0 +1,280 @@ + +using namespace System.Management.Automation +using namespace System.Management.Automation.Language + +Register-ArgumentCompleter -Native -CommandName 'rsp' -ScriptBlock { + param($wordToComplete, $commandAst, $cursorPosition) + + $commandElements = $commandAst.CommandElements + $command = @( + 'rsp' + for ($i = 1; $i -lt $commandElements.Count; $i++) { + $element = $commandElements[$i] + if ($element -isnot [StringConstantExpressionAst] -or + $element.StringConstantType -ne [StringConstantType]::BareWord -or + $element.Value.StartsWith('-') -or + $element.Value -eq $wordToComplete) { + break + } + $element.Value + }) -join ';' + + $completions = @(switch ($command) { + 'rsp' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('start-daemon', 'start-daemon', [CompletionResultType]::ParameterValue, 'Start the daemon') + [CompletionResult]::new('stop-daemon', 'stop-daemon', [CompletionResultType]::ParameterValue, 'Stop the daemon') + [CompletionResult]::new('restart', 'restart', [CompletionResultType]::ParameterValue, 'Restart the daemon (kill existing and start new)') + [CompletionResult]::new('play', 'play', [CompletionResultType]::ParameterValue, 'Play a track, album, or artist') + [CompletionResult]::new('pause', 'pause', [CompletionResultType]::ParameterValue, 'Pause playback') + [CompletionResult]::new('resume', 'resume', [CompletionResultType]::ParameterValue, 'Resume playback') + [CompletionResult]::new('toggle', 'toggle', [CompletionResultType]::ParameterValue, 'Toggle play/pause') + [CompletionResult]::new('stop', 'stop', [CompletionResultType]::ParameterValue, 'Stop playback') + [CompletionResult]::new('next', 'next', [CompletionResultType]::ParameterValue, 'Skip to next track') + [CompletionResult]::new('previous', 'previous', [CompletionResultType]::ParameterValue, 'Skip to previous track') + [CompletionResult]::new('volume', 'volume', [CompletionResultType]::ParameterValue, 'Set volume (0-100)') + [CompletionResult]::new('shuffle', 'shuffle', [CompletionResultType]::ParameterValue, 'Shuffle mode') + [CompletionResult]::new('queue', 'queue', [CompletionResultType]::ParameterValue, 'Queue management') + [CompletionResult]::new('status', 'status', [CompletionResultType]::ParameterValue, 'Show player status') + [CompletionResult]::new('scan', 'scan', [CompletionResultType]::ParameterValue, 'Scan music paths to populate database') + [CompletionResult]::new('settings', 'settings', [CompletionResultType]::ParameterValue, 'Settings management') + [CompletionResult]::new('completions', 'completions', [CompletionResultType]::ParameterValue, 'Generate shell completions (developer only)') + [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') + break + } + 'rsp;start-daemon' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;stop-daemon' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;restart' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;play' { + [CompletionResult]::new('-i', '-i', [CompletionResultType]::ParameterName, 'Add after current track and skip to it') + [CompletionResult]::new('--now', '--now', [CompletionResultType]::ParameterName, 'Add after current track and skip to it') + [CompletionResult]::new('-n', '-n', [CompletionResultType]::ParameterName, 'Add to queue after current track (don''t skip)') + [CompletionResult]::new('--next', '--next', [CompletionResultType]::ParameterName, 'Add to queue after current track (don''t skip)') + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;pause' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;resume' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;toggle' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;stop' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;next' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;previous' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;volume' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;shuffle' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;queue' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;status' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;scan' { + [CompletionResult]::new('--paths', '--paths', [CompletionResultType]::ParameterName, 'paths') + [CompletionResult]::new('--force', '--force', [CompletionResultType]::ParameterName, 'force') + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;settings' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('get', 'get', [CompletionResultType]::ParameterValue, 'Get a setting value') + [CompletionResult]::new('set', 'set', [CompletionResultType]::ParameterValue, 'Set a setting value') + [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List all settings') + [CompletionResult]::new('unset', 'unset', [CompletionResultType]::ParameterValue, 'Unset a setting') + [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') + break + } + 'rsp;settings;get' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;settings;set' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;settings;list' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;settings;unset' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;settings;help' { + [CompletionResult]::new('get', 'get', [CompletionResultType]::ParameterValue, 'Get a setting value') + [CompletionResult]::new('set', 'set', [CompletionResultType]::ParameterValue, 'Set a setting value') + [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List all settings') + [CompletionResult]::new('unset', 'unset', [CompletionResultType]::ParameterValue, 'Unset a setting') + [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') + break + } + 'rsp;settings;help;get' { + break + } + 'rsp;settings;help;set' { + break + } + 'rsp;settings;help;list' { + break + } + 'rsp;settings;help;unset' { + break + } + 'rsp;settings;help;help' { + break + } + 'rsp;completions' { + [CompletionResult]::new('-h', '-h', [CompletionResultType]::ParameterName, 'Print help') + [CompletionResult]::new('--help', '--help', [CompletionResultType]::ParameterName, 'Print help') + break + } + 'rsp;help' { + [CompletionResult]::new('start-daemon', 'start-daemon', [CompletionResultType]::ParameterValue, 'Start the daemon') + [CompletionResult]::new('stop-daemon', 'stop-daemon', [CompletionResultType]::ParameterValue, 'Stop the daemon') + [CompletionResult]::new('restart', 'restart', [CompletionResultType]::ParameterValue, 'Restart the daemon (kill existing and start new)') + [CompletionResult]::new('play', 'play', [CompletionResultType]::ParameterValue, 'Play a track, album, or artist') + [CompletionResult]::new('pause', 'pause', [CompletionResultType]::ParameterValue, 'Pause playback') + [CompletionResult]::new('resume', 'resume', [CompletionResultType]::ParameterValue, 'Resume playback') + [CompletionResult]::new('toggle', 'toggle', [CompletionResultType]::ParameterValue, 'Toggle play/pause') + [CompletionResult]::new('stop', 'stop', [CompletionResultType]::ParameterValue, 'Stop playback') + [CompletionResult]::new('next', 'next', [CompletionResultType]::ParameterValue, 'Skip to next track') + [CompletionResult]::new('previous', 'previous', [CompletionResultType]::ParameterValue, 'Skip to previous track') + [CompletionResult]::new('volume', 'volume', [CompletionResultType]::ParameterValue, 'Set volume (0-100)') + [CompletionResult]::new('shuffle', 'shuffle', [CompletionResultType]::ParameterValue, 'Shuffle mode') + [CompletionResult]::new('queue', 'queue', [CompletionResultType]::ParameterValue, 'Queue management') + [CompletionResult]::new('status', 'status', [CompletionResultType]::ParameterValue, 'Show player status') + [CompletionResult]::new('scan', 'scan', [CompletionResultType]::ParameterValue, 'Scan music paths to populate database') + [CompletionResult]::new('settings', 'settings', [CompletionResultType]::ParameterValue, 'Settings management') + [CompletionResult]::new('completions', 'completions', [CompletionResultType]::ParameterValue, 'Generate shell completions (developer only)') + [CompletionResult]::new('help', 'help', [CompletionResultType]::ParameterValue, 'Print this message or the help of the given subcommand(s)') + break + } + 'rsp;help;start-daemon' { + break + } + 'rsp;help;stop-daemon' { + break + } + 'rsp;help;restart' { + break + } + 'rsp;help;play' { + break + } + 'rsp;help;pause' { + break + } + 'rsp;help;resume' { + break + } + 'rsp;help;toggle' { + break + } + 'rsp;help;stop' { + break + } + 'rsp;help;next' { + break + } + 'rsp;help;previous' { + break + } + 'rsp;help;volume' { + break + } + 'rsp;help;shuffle' { + break + } + 'rsp;help;queue' { + break + } + 'rsp;help;status' { + break + } + 'rsp;help;scan' { + break + } + 'rsp;help;settings' { + [CompletionResult]::new('get', 'get', [CompletionResultType]::ParameterValue, 'Get a setting value') + [CompletionResult]::new('set', 'set', [CompletionResultType]::ParameterValue, 'Set a setting value') + [CompletionResult]::new('list', 'list', [CompletionResultType]::ParameterValue, 'List all settings') + [CompletionResult]::new('unset', 'unset', [CompletionResultType]::ParameterValue, 'Unset a setting') + break + } + 'rsp;help;settings;get' { + break + } + 'rsp;help;settings;set' { + break + } + 'rsp;help;settings;list' { + break + } + 'rsp;help;settings;unset' { + break + } + 'rsp;help;completions' { + break + } + 'rsp;help;help' { + break + } + }) + + $completions.Where{ $_.CompletionText -like "$wordToComplete*" } | + Sort-Object -Property ListItemText +} -- cgit v1.2.3