diff --git a/scripts/completion/ccs.bash b/scripts/completion/ccs.bash index f7d19e10..a1b27984 100644 --- a/scripts/completion/ccs.bash +++ b/scripts/completion/ccs.bash @@ -22,18 +22,6 @@ __ccs_completion_run() { local current="$1" shift || true - local script_dir repo_root repo_cli - script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" - repo_root="$(cd "${script_dir}/../.." && pwd)" - repo_cli="${repo_root}/dist/ccs.js" - if [[ ! -f "${repo_cli}" ]]; then - repo_cli="${repo_root}/bin/ccs.js" - fi - if [[ -f "${repo_cli}" ]]; then - node "${repo_cli}" __complete --shell bash --current "${current}" -- "$@" 2>/dev/null - return 0 - fi - if command -v ccs >/dev/null 2>&1; then ccs __complete --shell bash --current "${current}" -- "$@" 2>/dev/null fi diff --git a/scripts/completion/ccs.fish b/scripts/completion/ccs.fish index 96d801bf..c06111e3 100644 --- a/scripts/completion/ccs.fish +++ b/scripts/completion/ccs.fish @@ -11,17 +11,6 @@ function __fish_ccs_complete set -e tokens_before_current[-1] end - set -l script_file (status filename) - set -l repo_root (realpath (dirname $script_file)/../.. 2>/dev/null) - set -l repo_cli "$repo_root/dist/ccs.js" - if not test -f "$repo_cli" - set repo_cli "$repo_root/bin/ccs.js" - end - if test -f "$repo_cli" - node "$repo_cli" __complete --shell fish --current "$current" -- $tokens_before_current 2>/dev/null - return - end - if command -sq ccs ccs __complete --shell fish --current "$current" -- $tokens_before_current 2>/dev/null end diff --git a/scripts/completion/ccs.ps1 b/scripts/completion/ccs.ps1 index 0ec00e94..04051ead 100644 --- a/scripts/completion/ccs.ps1 +++ b/scripts/completion/ccs.ps1 @@ -6,16 +6,6 @@ function Invoke-CcsCompletionBackend { [string[]]$TokensBeforeCurrent ) - $repoRoot = (Resolve-Path (Join-Path $PSScriptRoot '..\..')).Path - $repoCli = Join-Path $repoRoot 'dist\ccs.js' - if (-not (Test-Path $repoCli)) { - $repoCli = Join-Path $repoRoot 'bin\ccs.js' - } - if (Test-Path $repoCli) { - & node $repoCli __complete --shell powershell --current $CurrentWord -- @TokensBeforeCurrent 2>$null - return - } - if (Get-Command ccs -ErrorAction SilentlyContinue) { & ccs __complete --shell powershell --current $CurrentWord -- @TokensBeforeCurrent 2>$null } diff --git a/scripts/completion/ccs.zsh b/scripts/completion/ccs.zsh index 97e59220..281da9e3 100644 --- a/scripts/completion/ccs.zsh +++ b/scripts/completion/ccs.zsh @@ -22,19 +22,6 @@ __ccs_completion_run() { local current="$1" shift || true - local script_path script_dir repo_root repo_cli - script_path="${(%):-%N}" - script_dir="${script_path:A:h}" - repo_root="${script_dir:h:h}" - repo_cli="${repo_root}/dist/ccs.js" - if [[ ! -f "${repo_cli}" ]]; then - repo_cli="${repo_root}/bin/ccs.js" - fi - if [[ -f "${repo_cli}" ]]; then - node "${repo_cli}" __complete --shell zsh --current "${current}" -- "$@" 2>/dev/null - return 0 - fi - if (( $+commands[ccs] )); then ccs __complete --shell zsh --current "${current}" -- "$@" 2>/dev/null fi diff --git a/tests/unit/commands/shell-completion-command.test.ts b/tests/unit/commands/shell-completion-command.test.ts index c8a285d9..86d2efd4 100644 --- a/tests/unit/commands/shell-completion-command.test.ts +++ b/tests/unit/commands/shell-completion-command.test.ts @@ -143,6 +143,27 @@ describe('shell-completion command', () => { ); }); + it('completion adapters only delegate to the ccs command on PATH', () => { + const completionScripts = [ + '../../../scripts/completion/ccs.bash', + '../../../scripts/completion/ccs.zsh', + '../../../scripts/completion/ccs.fish', + '../../../scripts/completion/ccs.ps1', + ]; + + for (const scriptPath of completionScripts) { + const script = readFileSync(join(import.meta.dir, scriptPath), 'utf8'); + + expect(script).not.toContain('../..'); + expect(script).not.toContain('repo_root'); + expect(script).not.toContain('repoRoot'); + expect(script).not.toContain('repo_cli'); + expect(script).not.toContain('repoCli'); + expect(script).not.toContain('node '); + expect(script).not.toContain('& node'); + } + }); + it('fish completion strips a duplicated partial token before delegating to __complete', () => { const fishScript = readFileSync( join(import.meta.dir, '../../../scripts/completion/ccs.fish'),