Store installed release version as a part of install metadata (#9122)

This commit is contained in:
Jacob MacDonald
2025-09-22 09:42:35 -07:00
committed by GitHub
parent 57272f84b1
commit 34c14b7dd2
3 changed files with 7 additions and 18 deletions

View File

@@ -406,8 +406,8 @@ export async function installExtension(
installMetadata,
tempDir,
);
updateExtensionVersion(tempDir, tagName);
installMetadata.type = 'github-release';
installMetadata.releaseTag = tagName;
} catch (_error) {
await cloneFromGit(installMetadata, tempDir);
installMetadata.type = 'git';
@@ -503,21 +503,6 @@ export async function installExtension(
}
}
async function updateExtensionVersion(
extensionDir: string,
extensionVersion: string,
) {
const configFilePath = path.join(extensionDir, EXTENSIONS_CONFIG_FILENAME);
if (fs.existsSync(configFilePath)) {
const configContent = await fs.promises.readFile(configFilePath, 'utf-8');
const config = JSON.parse(configContent);
config.version = extensionVersion;
await fs.promises.writeFile(
configFilePath,
JSON.stringify(config, null, 2),
);
}
}
async function requestConsent(extensionConfig: ExtensionConfig) {
const mcpServerEntries = Object.entries(extensionConfig.mcpServers || {});
if (mcpServerEntries.length) {
@@ -609,6 +594,9 @@ export function toOutputString(extension: Extension): string {
if (extension.installMetadata.ref) {
output += `\n Ref: ${extension.installMetadata.ref}`;
}
if (extension.installMetadata.releaseTag) {
output += `\n Release tag: ${extension.installMetadata.releaseTag}`;
}
}
if (extension.contextFiles.length > 0) {
output += `\n Context files:`;

View File

@@ -191,7 +191,7 @@ export async function checkForExtensionUpdate(
setExtensionUpdateState(ExtensionUpdateState.UPDATE_AVAILABLE);
return;
} else {
const { source, ref } = installMetadata;
const { source, releaseTag } = installMetadata;
if (!source) {
console.error(`No "source" provided for extension.`);
setExtensionUpdateState(ExtensionUpdateState.ERROR);
@@ -204,7 +204,7 @@ export async function checkForExtensionUpdate(
repo,
installMetadata.ref,
);
if (releaseData.tag_name !== ref) {
if (releaseData.tag_name !== releaseTag) {
setExtensionUpdateState(ExtensionUpdateState.UPDATE_AVAILABLE);
return;
}

View File

@@ -124,6 +124,7 @@ export interface GeminiCLIExtension {
export interface ExtensionInstallMetadata {
source: string;
type: 'git' | 'local' | 'link' | 'github-release';
releaseTag?: string; // Only present for github-release installs.
ref?: string;
autoUpdate?: boolean;
}