mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-05-14 13:53:02 -07:00
Rationalize different Extension typings (#10435)
This commit is contained in:
@@ -9,7 +9,7 @@ import fs from 'node:fs';
|
||||
import os from 'node:os';
|
||||
import { afterEach, beforeEach, describe, expect, it } from 'vitest';
|
||||
import { ExtensionEnablementManager, Override } from './extensionEnablement.js';
|
||||
import type { Extension } from '../extension.js';
|
||||
import type { GeminiCLIExtension } from '@google/gemini-cli-core';
|
||||
|
||||
// Helper to create a temporary directory for testing
|
||||
function createTestDir() {
|
||||
@@ -286,9 +286,9 @@ describe('ExtensionEnablementManager', () => {
|
||||
'ext-two',
|
||||
]);
|
||||
const extensions = [
|
||||
{ config: { name: 'ext-one' } },
|
||||
{ config: { name: 'ext-two' } },
|
||||
] as Extension[];
|
||||
{ name: 'ext-one' },
|
||||
{ name: 'ext-two' },
|
||||
] as GeminiCLIExtension[];
|
||||
manager.validateExtensionOverrides(extensions);
|
||||
expect(consoleErrorSpy).not.toHaveBeenCalled();
|
||||
});
|
||||
@@ -300,9 +300,9 @@ describe('ExtensionEnablementManager', () => {
|
||||
'ext-another-invalid',
|
||||
]);
|
||||
const extensions = [
|
||||
{ config: { name: 'ext-one' } },
|
||||
{ config: { name: 'ext-two' } },
|
||||
] as Extension[];
|
||||
{ name: 'ext-one' },
|
||||
{ name: 'ext-two' },
|
||||
] as GeminiCLIExtension[];
|
||||
manager.validateExtensionOverrides(extensions);
|
||||
expect(consoleErrorSpy).toHaveBeenCalledTimes(2);
|
||||
expect(consoleErrorSpy).toHaveBeenCalledWith(
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
|
||||
import fs from 'node:fs';
|
||||
import path from 'node:path';
|
||||
import { type Extension } from '../extension.js';
|
||||
import type { GeminiCLIExtension } from '@google/gemini-cli-core';
|
||||
|
||||
export interface ExtensionEnablementConfig {
|
||||
overrides: string[];
|
||||
@@ -119,13 +119,11 @@ export class ExtensionEnablementManager {
|
||||
enabledExtensionNames?.map((name) => name.toLowerCase()) ?? [];
|
||||
}
|
||||
|
||||
validateExtensionOverrides(extensions: Extension[]) {
|
||||
validateExtensionOverrides(extensions: GeminiCLIExtension[]) {
|
||||
for (const name of this.enabledExtensionNamesOverride) {
|
||||
if (name === 'none') continue;
|
||||
if (
|
||||
!extensions.some(
|
||||
(ext) => ext.config.name.toLowerCase() === name.toLowerCase(),
|
||||
)
|
||||
!extensions.some((ext) => ext.name.toLowerCase() === name.toLowerCase())
|
||||
) {
|
||||
console.error(`Extension not found: ${name}`);
|
||||
}
|
||||
|
||||
@@ -137,6 +137,7 @@ describe('git extension helpers', () => {
|
||||
type: 'link',
|
||||
source: '',
|
||||
},
|
||||
contextFiles: [],
|
||||
};
|
||||
const result = await checkForExtensionUpdate(extension);
|
||||
expect(result).toBe(ExtensionUpdateState.NOT_UPDATABLE);
|
||||
@@ -152,6 +153,7 @@ describe('git extension helpers', () => {
|
||||
type: 'git',
|
||||
source: '',
|
||||
},
|
||||
contextFiles: [],
|
||||
};
|
||||
mockGit.getRemotes.mockResolvedValue([]);
|
||||
const result = await checkForExtensionUpdate(extension);
|
||||
@@ -168,6 +170,7 @@ describe('git extension helpers', () => {
|
||||
type: 'git',
|
||||
source: 'my/ext',
|
||||
},
|
||||
contextFiles: [],
|
||||
};
|
||||
mockGit.getRemotes.mockResolvedValue([
|
||||
{ name: 'origin', refs: { fetch: 'http://my-repo.com' } },
|
||||
@@ -189,6 +192,7 @@ describe('git extension helpers', () => {
|
||||
type: 'git',
|
||||
source: 'my/ext',
|
||||
},
|
||||
contextFiles: [],
|
||||
};
|
||||
mockGit.getRemotes.mockResolvedValue([
|
||||
{ name: 'origin', refs: { fetch: 'http://my-repo.com' } },
|
||||
@@ -210,6 +214,7 @@ describe('git extension helpers', () => {
|
||||
type: 'git',
|
||||
source: 'my/ext',
|
||||
},
|
||||
contextFiles: [],
|
||||
};
|
||||
mockGit.getRemotes.mockRejectedValue(new Error('git error'));
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ export async function checkForExtensionUpdate(
|
||||
);
|
||||
return ExtensionUpdateState.ERROR;
|
||||
}
|
||||
if (newExtension.config.version !== extension.version) {
|
||||
if (newExtension.version !== extension.version) {
|
||||
return ExtensionUpdateState.UPDATE_AVAILABLE;
|
||||
}
|
||||
return ExtensionUpdateState.UP_TO_DATE;
|
||||
|
||||
@@ -90,7 +90,7 @@ export async function updateExtension(
|
||||
});
|
||||
throw new Error('Updated extension not found after installation.');
|
||||
}
|
||||
const updatedVersion = updatedExtension.config.version;
|
||||
const updatedVersion = updatedExtension.version;
|
||||
dispatchExtensionStateUpdate({
|
||||
type: 'SET_STATE',
|
||||
payload: {
|
||||
|
||||
Reference in New Issue
Block a user