summaryrefslogtreecommitdiff
path: root/packages/cli/src/gemini.tsx
diff options
context:
space:
mode:
authorDaniel Lee <[email protected]>2025-07-11 16:52:56 -0700
committerGitHub <[email protected]>2025-07-11 23:52:56 +0000
commit5b6608ad844f89954b9107ad81b3791fae02607a (patch)
treebb37c297784bcfbdc1ecaeb3845716f1cd1db960 /packages/cli/src/gemini.tsx
parent5b5f496436a060124e57009d1f7f37bd4d27f0f3 (diff)
feat(cli): add support for --prompt-interactive/-i flag (#1743)
Diffstat (limited to 'packages/cli/src/gemini.tsx')
-rw-r--r--packages/cli/src/gemini.tsx25
1 files changed, 22 insertions, 3 deletions
diff --git a/packages/cli/src/gemini.tsx b/packages/cli/src/gemini.tsx
index 3c0b151b..b2f84c80 100644
--- a/packages/cli/src/gemini.tsx
+++ b/packages/cli/src/gemini.tsx
@@ -7,7 +7,7 @@
import React from 'react';
import { render } from 'ink';
import { AppWrapper } from './ui/App.js';
-import { loadCliConfig } from './config/config.js';
+import { loadCliConfig, parseArguments, CliArgs } from './config/config.js';
import { readStdin } from './utils/readStdin.js';
import { basename } from 'node:path';
import v8 from 'node:v8';
@@ -102,8 +102,21 @@ export async function main() {
process.exit(1);
}
+ const argv = await parseArguments();
const extensions = loadExtensions(workspaceRoot);
- const config = await loadCliConfig(settings.merged, extensions, sessionId);
+ const config = await loadCliConfig(
+ settings.merged,
+ extensions,
+ sessionId,
+ argv,
+ );
+
+ if (argv.promptInteractive && !process.stdin.isTTY) {
+ console.error(
+ 'Error: The --prompt-interactive flag is not supported when piping input from stdin.',
+ );
+ process.exit(1);
+ }
if (config.getListExtensions()) {
console.log('Installed extensions:');
@@ -182,8 +195,11 @@ export async function main() {
...(await getUserStartupWarnings(workspaceRoot)),
];
+ const shouldBeInteractive =
+ !!argv.promptInteractive || (process.stdin.isTTY && input?.length === 0);
+
// Render UI, passing necessary config values. Check that there is no command line question.
- if (process.stdin.isTTY && input?.length === 0) {
+ if (shouldBeInteractive) {
const version = await getCliVersion();
setWindowTitle(basename(workspaceRoot), settings);
render(
@@ -224,6 +240,7 @@ export async function main() {
config,
extensions,
settings,
+ argv,
);
await runNonInteractive(nonInteractiveConfig, input, prompt_id);
@@ -264,6 +281,7 @@ async function loadNonInteractiveConfig(
config: Config,
extensions: Extension[],
settings: LoadedSettings,
+ argv: CliArgs,
) {
let finalConfig = config;
if (config.getApprovalMode() !== ApprovalMode.YOLO) {
@@ -287,6 +305,7 @@ async function loadNonInteractiveConfig(
nonInteractiveSettings,
extensions,
config.getSessionId(),
+ argv,
);
await finalConfig.initialize();
}