Files
gemini-cli/packages/cli/src/commands/extensions/list.ts
T

49 lines
1.2 KiB
TypeScript
Raw Normal View History

/**
* @license
* Copyright 2025 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import type { CommandModule } from 'yargs';
import {
loadUserExtensions,
toOutputString,
ExtensionStorage,
} from '../../config/extension.js';
import { ExtensionEnablementManager } from '../../config/extensions/extensionEnablement.js';
2025-08-26 14:36:55 +00:00
import { getErrorMessage } from '../../utils/errors.js';
export async function handleList() {
try {
const extensions = loadUserExtensions();
if (extensions.length === 0) {
console.log('No extensions installed.');
return;
}
const manager = new ExtensionEnablementManager(
ExtensionStorage.getUserExtensionsDir(),
);
const cwd = process.cwd();
console.log(
extensions
.map((extension): string => {
const isEnabled = manager.isEnabled(extension.config.name, cwd);
return toOutputString(extension, isEnabled);
})
.join('\n\n'),
);
} catch (error) {
2025-08-26 14:36:55 +00:00
console.error(getErrorMessage(error));
process.exit(1);
}
}
export const listCommand: CommandModule = {
command: 'list',
describe: 'Lists installed extensions.',
builder: (yargs) => yargs,
handler: async () => {
await handleList();
},
};