From 6dd3a6af9f28f4700a8c69acb9f404351b9c8d45 Mon Sep 17 00:00:00 2001 From: Waleed Latif Date: Fri, 9 Oct 2026 16:17:39 -0700 Subject: [PATCH] fix(sim-cli): an unknown option on a command with no options says so --- packages/sim-cli/src/embed-isolation.test.ts | 7 ++++++- packages/sim-cli/src/runtime/build.ts | 6 +++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/packages/sim-cli/src/embed-isolation.test.ts b/packages/sim-cli/src/embed-isolation.test.ts index 89626b908ad..674910611d6 100644 --- a/packages/sim-cli/src/embed-isolation.test.ts +++ b/packages/sim-cli/src/embed-isolation.test.ts @@ -92,13 +92,14 @@ describe('embedded CLI output ownership', () => { const transport = async () => { throw new Error('a parse error must not reach the API') } - const [guessed, dashedId, noArguments] = await Promise.all([ + const [guessed, dashedId, noArguments, noOptions] = await Promise.all([ runEmbeddedCli(['tables', 'rows', 'batch-delete', 'tbl_1', '--row-ids', 'row_1', '--yes'], { ...identity, transport, }), runEmbeddedCli(['audit-logs', 'get', '-X9abc'], { ...identity, transport }), runEmbeddedCli(['logs', 'list', '-X9abc'], { ...identity, transport }), + runEmbeddedCli(['workspaces', 'get', 'ws_1', '--verbose'], { ...identity, transport }), ]) expect(guessed.exitCode).toBe(1) expect(guessed.stderr).toContain("unknown option '--row-ids'") @@ -111,5 +112,9 @@ describe('embedded CLI output ownership', () => { expect(noArguments.exitCode).toBe(1) expect(noArguments.stderr).toContain('Options for sim logs list:') expect(noArguments.stderr).not.toContain('Example:') + // An empty list reads as truncated output rather than as an answer. + expect(noOptions.exitCode).toBe(1) + expect(noOptions.stderr).toContain('sim workspaces get takes no options.') + expect(noOptions.stderr).not.toContain('Options for') }) }) diff --git a/packages/sim-cli/src/runtime/build.ts b/packages/sim-cli/src/runtime/build.ts index 950c7d3b4b8..9fe44184a61 100644 --- a/packages/sim-cli/src/runtime/build.ts +++ b/packages/sim-cli/src/runtime/build.ts @@ -123,7 +123,11 @@ function addParseErrorGuidance(command: Command): Command { return } const flags = command.options.filter((option) => !option.hidden).map((option) => option.flags) - write(`Options for ${commandPath(command)}: ${flags.join(', ')}\n`) + write( + flags.length > 0 + ? `Options for ${commandPath(command)}: ${flags.join(', ')}\n` + : `${commandPath(command)} takes no options.\n` + ) }, }) return command