diff options
Diffstat (limited to 'packages/cli/src/config/config.ts')
| -rw-r--r-- | packages/cli/src/config/config.ts | 34 |
1 files changed, 30 insertions, 4 deletions
diff --git a/packages/cli/src/config/config.ts b/packages/cli/src/config/config.ts index b79d20fc..7d1af7e1 100644 --- a/packages/cli/src/config/config.ts +++ b/packages/cli/src/config/config.ts @@ -20,7 +20,7 @@ import { } from '@google/gemini-cli-core'; import { Settings } from './settings.js'; -import { Extension } from './extension.js'; +import { Extension, filterActiveExtensions } from './extension.js'; import { getCliVersion } from '../utils/version.js'; import { loadSandboxConfig } from './sandboxConfig.js'; @@ -49,6 +49,8 @@ interface CliArgs { telemetryOtlpEndpoint: string | undefined; telemetryLogPrompts: boolean | undefined; 'allowed-mcp-server-names': string | undefined; + extensions: string[] | undefined; + listExtensions: boolean | undefined; } async function parseArguments(): Promise<CliArgs> { @@ -133,6 +135,18 @@ async function parseArguments(): Promise<CliArgs> { type: 'string', description: 'Allowed MCP server names', }) + .option('extensions', { + alias: 'e', + type: 'array', + string: true, + description: + 'A list of extensions to use. If not provided, all extensions are used.', + }) + .option('list-extensions', { + alias: 'l', + type: 'boolean', + description: 'List all available extensions and exit.', + }) .version(await getCliVersion()) // This will enable the --version flag based on package.json .alias('v', 'version') .help() @@ -174,6 +188,11 @@ export async function loadCliConfig( const argv = await parseArguments(); const debugMode = argv.debug || false; + const activeExtensions = filterActiveExtensions( + extensions, + argv.extensions || [], + ); + // Set the context filename in the server's memoryTool module BEFORE loading memory // TODO(b/343434939): This is a bit of a hack. The contextFileName should ideally be passed // directly to the Config constructor in core, and have core handle setGeminiMdFilename. @@ -185,7 +204,9 @@ export async function loadCliConfig( setServerGeminiMdFilename(getCurrentGeminiMdFilename()); } - const extensionContextFilePaths = extensions.flatMap((e) => e.contextFiles); + const extensionContextFilePaths = activeExtensions.flatMap( + (e) => e.contextFiles, + ); const fileService = new FileDiscoveryService(process.cwd()); // Call the (now wrapper) loadHierarchicalGeminiMemory which calls the server's version @@ -196,8 +217,8 @@ export async function loadCliConfig( extensionContextFilePaths, ); - let mcpServers = mergeMcpServers(settings, extensions); - const excludeTools = mergeExcludeTools(settings, extensions); + let mcpServers = mergeMcpServers(settings, activeExtensions); + const excludeTools = mergeExcludeTools(settings, activeExtensions); if (argv['allowed-mcp-server-names']) { const allowedNames = new Set( @@ -262,6 +283,11 @@ export async function loadCliConfig( bugCommand: settings.bugCommand, model: argv.model!, extensionContextFilePaths, + listExtensions: argv.listExtensions || false, + activeExtensions: activeExtensions.map((e) => ({ + name: e.config.name, + version: e.config.version, + })), }); } |
