mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-11 14:40:52 -07:00
100 lines
2.9 KiB
JavaScript
Executable File
100 lines
2.9 KiB
JavaScript
Executable File
/**
|
|
* @license
|
|
* Copyright 2025 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { execSync } from 'node:child_process';
|
|
|
|
function checkRelease() {
|
|
try {
|
|
// Step 1: Find the commit hash of the last release
|
|
const bucketUri = 'gs://gemini-cli-vscode-extension/release/1p/signed';
|
|
const gcloudOutput = execSync(
|
|
`gcloud storage ls --recursive ${bucketUri}`,
|
|
{ encoding: 'utf-8' },
|
|
);
|
|
const files = gcloudOutput.trim().split('\n');
|
|
const vsixFiles = files.filter((file) =>
|
|
/signed-gemini-cli-vscode-ide-companion-\d+\.\d+\.\d+-[a-f0-9]{7}\.vsix$/.test(
|
|
file,
|
|
),
|
|
);
|
|
|
|
if (vsixFiles.length === 0) {
|
|
console.error('No .vsix files found in the bucket.');
|
|
process.exit(1);
|
|
}
|
|
|
|
vsixFiles.sort();
|
|
const latestFile = vsixFiles[vsixFiles.length - 1];
|
|
const fileName = latestFile.split('/').pop();
|
|
const match =
|
|
/signed-gemini-cli-vscode-ide-companion-(\d+\.\d+\.\d+)-([a-f0-9]{7})\.vsix$/.exec(
|
|
fileName,
|
|
);
|
|
|
|
if (!match || !match[1] || !match[2]) {
|
|
console.error(
|
|
`Could not extract version and commit hash from filename: ${fileName}`,
|
|
);
|
|
process.exit(1);
|
|
}
|
|
const lastReleaseVersion = match[1];
|
|
const lastReleaseCommit = match[2];
|
|
|
|
// Step 2: Check for new commits
|
|
execSync('git fetch origin main', { stdio: 'pipe' });
|
|
const gitLog = execSync(
|
|
`git log ${lastReleaseCommit}..origin/main --invert-grep --grep="chore(release): bump version to" -- packages/vscode-ide-companion`,
|
|
{ encoding: 'utf-8' },
|
|
).trim();
|
|
|
|
// Step 3: Check for dependency changes
|
|
const noticesDiff = execSync(
|
|
`git diff ${lastReleaseCommit}..origin/main -- packages/vscode-ide-companion/NOTICES.txt`,
|
|
{ encoding: 'utf-8' },
|
|
).trim();
|
|
|
|
if (gitLog) {
|
|
console.log('\n--- New Commits ---');
|
|
console.log(gitLog);
|
|
console.log('-------------------');
|
|
}
|
|
|
|
if (noticesDiff) {
|
|
console.log('\n--- Dependency Changes ---');
|
|
console.log(noticesDiff);
|
|
console.log('------------------------');
|
|
}
|
|
|
|
console.log('\n--- Summary ---');
|
|
if (gitLog) {
|
|
console.log(
|
|
'New commits found for `packages/vscode-ide-companion` since last release. A new release is needed.',
|
|
);
|
|
} else {
|
|
console.log(
|
|
'No new commits found since last release. No release is necessary.',
|
|
);
|
|
}
|
|
|
|
if (noticesDiff) {
|
|
console.log(
|
|
'Dependencies have changed. The license review form will require extra details.',
|
|
);
|
|
} else {
|
|
console.log('No dependency changes found.');
|
|
}
|
|
|
|
console.log(`Last release version: ${lastReleaseVersion}`);
|
|
console.log(`Last release commit hash: ${lastReleaseCommit}`);
|
|
console.log('---------------');
|
|
} catch (error) {
|
|
console.error('Error checking for release:', error.message);
|
|
process.exit(1);
|
|
}
|
|
}
|
|
|
|
checkRelease();
|