diff options
| author | Daniel Lee <[email protected]> | 2025-07-11 16:52:56 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-07-11 23:52:56 +0000 |
| commit | 5b6608ad844f89954b9107ad81b3791fae02607a (patch) | |
| tree | bb37c297784bcfbdc1ecaeb3845716f1cd1db960 /packages/cli/src/config/config.ts | |
| parent | 5b5f496436a060124e57009d1f7f37bd4d27f0f3 (diff) | |
feat(cli): add support for --prompt-interactive/-i flag (#1743)
Diffstat (limited to 'packages/cli/src/config/config.ts')
| -rw-r--r-- | packages/cli/src/config/config.ts | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index b685f090..1c1f0746 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -34,12 +34,13 @@ const logger = { error: (...args: any[]) => console.error('[ERROR]', ...args), }; -interface CliArgs { +export interface CliArgs { model: string | undefined; sandbox: boolean | string | undefined; sandboxImage: string | undefined; debug: boolean | undefined; prompt: string | undefined; + promptInteractive: string | undefined; allFiles: boolean | undefined; all_files: boolean | undefined; showMemoryUsage: boolean | undefined; @@ -55,7 +56,7 @@ interface CliArgs { listExtensions: boolean | undefined; } -async function parseArguments(): Promise<CliArgs> { +export async function parseArguments(): Promise<CliArgs> { const yargsInstance = yargs(hideBin(process.argv)) .scriptName('gemini') .usage( @@ -73,6 +74,12 @@ async function parseArguments(): Promise<CliArgs> { type: 'string', description: 'Prompt. Appended to input on stdin (if any).', }) + .option('prompt-interactive', { + alias: 'i', + type: 'string', + description: + 'Execute the provided prompt and continue in interactive mode', + }) .option('sandbox', { alias: 's', type: 'boolean', @@ -173,10 +180,17 @@ async function parseArguments(): Promise<CliArgs> { .alias('v', 'version') .help() .alias('h', 'help') - .strict(); + .strict() + .check((argv) => { + if (argv.prompt && argv.promptInteractive) { + throw new Error( + 'Cannot use both --prompt (-p) and --prompt-interactive (-i) together', + ); + } + return true; + }); yargsInstance.wrap(yargsInstance.terminalWidth()); - return yargsInstance.argv; } @@ -208,8 +222,8 @@ export async function loadCliConfig( settings: Settings, extensions: Extension[], sessionId: string, + argv: CliArgs, ): Promise<Config> { - const argv = await parseArguments(); const debugMode = argv.debug || [process.env.DEBUG, process.env.DEBUG_MODE].some( @@ -267,7 +281,7 @@ export async function loadCliConfig( sandbox: sandboxConfig, targetDir: process.cwd(), debugMode, - question: argv.prompt || '', + question: argv.promptInteractive || argv.prompt || '', fullContext: argv.allFiles || argv.all_files || false, coreTools: settings.coreTools || undefined, excludeTools, |
