Question flag (#125)
This commit is contained in:
parent
ef7dcdb49e
commit
9bc9c6e6c5
|
@ -20,6 +20,7 @@ interface CliArgs {
|
|||
target_dir: string | undefined;
|
||||
model: string | undefined;
|
||||
debug_mode: boolean | undefined;
|
||||
question: string | undefined;
|
||||
}
|
||||
|
||||
function parseArguments(): CliArgs {
|
||||
|
@ -42,6 +43,12 @@ function parseArguments(): CliArgs {
|
|||
description: 'Whether to run in debug mode. Defaults to false.',
|
||||
default: false,
|
||||
})
|
||||
.option('question', {
|
||||
alias: 'q',
|
||||
type: 'string',
|
||||
description:
|
||||
'The question to pass to the command when using piped input.',
|
||||
})
|
||||
.help()
|
||||
.alias('h', 'help')
|
||||
.strict().argv;
|
||||
|
@ -71,6 +78,7 @@ export function loadCliConfig(): Config {
|
|||
argv.model || DEFAULT_GEMINI_MODEL,
|
||||
argv.target_dir || process.cwd(),
|
||||
argv.debug_mode || false,
|
||||
argv.question || '',
|
||||
// TODO: load passthroughCommands from .env file
|
||||
);
|
||||
}
|
||||
|
|
|
@ -13,9 +13,10 @@ import { GeminiClient } from '@gemini-code/server';
|
|||
|
||||
async function main() {
|
||||
const config = loadCliConfig();
|
||||
let input = config.getQuestion();
|
||||
|
||||
// Render UI, passing necessary config values and initial input
|
||||
if (process.stdin.isTTY) {
|
||||
// Render UI, passing necessary config values. Check that there is no command line question.
|
||||
if (process.stdin.isTTY && input?.length === 0) {
|
||||
render(
|
||||
React.createElement(App, {
|
||||
config,
|
||||
|
@ -24,7 +25,11 @@ async function main() {
|
|||
return;
|
||||
}
|
||||
|
||||
const input = await readStdin();
|
||||
// If not a TTY, read from stdin
|
||||
// This is for cases where the user pipes input directly into the command
|
||||
if (!process.stdin.isTTY) {
|
||||
input += await readStdin();
|
||||
}
|
||||
if (!input) {
|
||||
console.error('No input provided via stdin.');
|
||||
process.exit(1);
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
* SPDX-License-Identifier: Apache-2.0
|
||||
*/
|
||||
|
||||
import { exec as _exec, exec } from 'child_process';
|
||||
import { exec as _exec } from 'child_process';
|
||||
import { useState, useRef, useCallback, useEffect } from 'react';
|
||||
import { useInput } from 'ink';
|
||||
import {
|
||||
|
|
|
@ -26,6 +26,7 @@ export class Config {
|
|||
private targetDir: string;
|
||||
private toolRegistry: ToolRegistry;
|
||||
private debugMode: boolean;
|
||||
private question: string | undefined;
|
||||
private passthroughCommands: string[];
|
||||
|
||||
constructor(
|
||||
|
@ -33,12 +34,14 @@ export class Config {
|
|||
model: string,
|
||||
targetDir: string,
|
||||
debugMode: boolean,
|
||||
question: string,
|
||||
passthroughCommands?: string[],
|
||||
) {
|
||||
this.apiKey = apiKey;
|
||||
this.model = model;
|
||||
this.targetDir = targetDir;
|
||||
this.debugMode = debugMode;
|
||||
this.question = question;
|
||||
this.passthroughCommands =
|
||||
passthroughCommands || DEFAULT_PASSTHROUGH_COMMANDS;
|
||||
|
||||
|
@ -64,6 +67,9 @@ export class Config {
|
|||
getDebugMode(): boolean {
|
||||
return this.debugMode;
|
||||
}
|
||||
getQuestion(): string | undefined {
|
||||
return this.question;
|
||||
}
|
||||
|
||||
getPassthroughCommands(): string[] {
|
||||
return this.passthroughCommands;
|
||||
|
@ -98,6 +104,7 @@ export function createServerConfig(
|
|||
model: string,
|
||||
targetDir: string,
|
||||
debugMode: boolean,
|
||||
question: string,
|
||||
passthroughCommands?: string[],
|
||||
): Config {
|
||||
return new Config(
|
||||
|
@ -105,6 +112,7 @@ export function createServerConfig(
|
|||
model,
|
||||
path.resolve(targetDir),
|
||||
debugMode,
|
||||
question,
|
||||
passthroughCommands,
|
||||
);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue