fix(cli): avoid duplicate Zsh positional completion
This commit is contained in:
parent
fe09a2e9b7
commit
6a2f9fae5f
2 changed files with 43 additions and 0 deletions
15
packages/cli/test/completions.test.ts
Normal file
15
packages/cli/test/completions.test.ts
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
import { expect, test } from "bun:test"
|
||||
import path from "node:path"
|
||||
|
||||
test("zsh completion does not define the first positional twice", async () => {
|
||||
const proc = Bun.spawn([process.execPath, path.join(import.meta.dir, "../src/index.ts"), "--completions", "zsh"], {
|
||||
stdout: "pipe",
|
||||
stderr: "pipe",
|
||||
})
|
||||
const output = await new Response(proc.stdout).text()
|
||||
const error = await new Response(proc.stderr).text()
|
||||
|
||||
expect(await proc.exited, error).toBe(0)
|
||||
expect(output).toContain("'1:command:->command'")
|
||||
expect(output).not.toContain("':Directory to start OpenCode in:'")
|
||||
})
|
||||
|
|
@ -55,3 +55,31 @@ index f2920365cf0328146523ce2e2dba04d6a8809a4a..5482d635cdf01a72063ff683d244fab8
|
|||
/**
|
||||
* Creates a streaming `Uint8Array` success response schema.
|
||||
*
|
||||
diff --git a/dist/unstable/cli/internal/completions/zsh.js b/dist/unstable/cli/internal/completions/zsh.js
|
||||
--- a/dist/unstable/cli/internal/completions/zsh.js
|
||||
+++ b/dist/unstable/cli/internal/completions/zsh.js
|
||||
@@ -102,9 +102,7 @@ const generateFunction = (descriptor, parentPath, lines) => {
|
||||
lines.push(` ${spec}`);
|
||||
}
|
||||
}
|
||||
- for (const arg of descriptor.arguments) {
|
||||
- lines.push(` ${argSpec(arg)}`);
|
||||
- }
|
||||
+ // Positional specs conflict with the explicit first-position subcommand dispatcher in Zsh.
|
||||
lines.push(` '1:command:->command'`);
|
||||
lines.push(` '*::arg:->args'`);
|
||||
lines.push(` )`);
|
||||
diff --git a/src/unstable/cli/internal/completions/zsh.ts b/src/unstable/cli/internal/completions/zsh.ts
|
||||
--- a/src/unstable/cli/internal/completions/zsh.ts
|
||||
+++ b/src/unstable/cli/internal/completions/zsh.ts
|
||||
@@ -133,9 +133,7 @@ const generateFunction = (
|
||||
lines.push(` ${spec}`)
|
||||
}
|
||||
}
|
||||
- for (const arg of descriptor.arguments) {
|
||||
- lines.push(` ${argSpec(arg)}`)
|
||||
- }
|
||||
+ // Positional specs conflict with the explicit first-position subcommand dispatcher in Zsh.
|
||||
lines.push(` '1:command:->command'`)
|
||||
lines.push(` '*::arg:->args'`)
|
||||
lines.push(` )`)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue