From 93a5d08f871209d82e2010d3d0f559967a24b32a Mon Sep 17 00:00:00 2001 From: Tomeshwari-02 Date: Fri, 3 Jul 2026 20:06:43 +0530 Subject: [PATCH] Validate CLI dir option values --- packages/cli/src/args.test.ts | 6 ++++++ packages/cli/src/args.ts | 8 +++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/packages/cli/src/args.test.ts b/packages/cli/src/args.test.ts index d89dd08b..39df8411 100644 --- a/packages/cli/src/args.test.ts +++ b/packages/cli/src/args.test.ts @@ -19,4 +19,10 @@ describe('parseArgs', () => { it('parses list', () => { expect(parseArgs(['list']).command).toBe('list'); }); + it('rejects --dir without a value', () => { + expect(() => parseArgs(['add', 'spinner', '--dir'])).toThrow('--dir requires a path value'); + }); + it('rejects --dir followed by another flag', () => { + expect(() => parseArgs(['add', 'spinner', '--dir', '--dry-run'])).toThrow('--dir requires a path value'); + }); }); diff --git a/packages/cli/src/args.ts b/packages/cli/src/args.ts index 930dec01..b77ab497 100644 --- a/packages/cli/src/args.ts +++ b/packages/cli/src/args.ts @@ -18,7 +18,13 @@ export function parseArgs(argv: string[]): CliArgs { for (let i = 0; i < rest.length; i++) { const a = rest[i]!; - if (a === '--dir') { dir = rest[++i]; } + if (a === '--dir') { + const value = rest[++i]; + if (!value || value.startsWith('-')) { + throw new Error('--dir requires a path value'); + } + dir = value; + } else if (a === '--dry-run') { dryRun = true; } else if (a === '--yes' || a === '-y') { yes = true; } else if (!a.startsWith('-')) { components.push(a); }