2025-06-17 08:24:07 -07:00
|
|
|
/**
|
|
|
|
|
* @license
|
|
|
|
|
* Copyright 2025 Google LLC
|
|
|
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
|
|
|
*/
|
|
|
|
|
|
2025-07-28 17:56:52 -07:00
|
|
|
import updateNotifier, { UpdateInfo } from 'update-notifier';
|
2025-06-30 20:03:16 -07:00
|
|
|
import semver from 'semver';
|
2025-06-24 17:26:50 -07:00
|
|
|
import { getPackageJson } from '../../utils/package.js';
|
2025-06-17 08:24:07 -07:00
|
|
|
|
2025-07-28 17:56:52 -07:00
|
|
|
export interface UpdateObject {
|
|
|
|
|
message: string;
|
|
|
|
|
update: UpdateInfo;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
export async function checkForUpdates(): Promise<UpdateObject | null> {
|
2025-06-20 00:30:30 -07:00
|
|
|
try {
|
2025-07-18 09:44:45 +09:00
|
|
|
// Skip update check when running from source (development mode)
|
|
|
|
|
if (process.env.DEV === 'true') {
|
|
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
|
2025-06-24 17:26:50 -07:00
|
|
|
const packageJson = await getPackageJson();
|
|
|
|
|
if (!packageJson || !packageJson.name || !packageJson.version) {
|
2025-06-20 00:30:30 -07:00
|
|
|
return null;
|
|
|
|
|
}
|
|
|
|
|
const notifier = updateNotifier({
|
|
|
|
|
pkg: {
|
|
|
|
|
name: packageJson.name,
|
|
|
|
|
version: packageJson.version,
|
|
|
|
|
},
|
|
|
|
|
// check every time
|
|
|
|
|
updateCheckInterval: 0,
|
|
|
|
|
// allow notifier to run in scripts
|
|
|
|
|
shouldNotifyInNpmScript: true,
|
|
|
|
|
});
|
2025-06-17 08:24:07 -07:00
|
|
|
|
2025-07-28 17:56:52 -07:00
|
|
|
const updateInfo = await notifier.fetchInfo();
|
|
|
|
|
|
|
|
|
|
if (updateInfo && semver.gt(updateInfo.latest, updateInfo.current)) {
|
|
|
|
|
return {
|
|
|
|
|
message: `Gemini CLI update available! ${updateInfo.current} → ${updateInfo.latest}`,
|
|
|
|
|
update: updateInfo,
|
|
|
|
|
};
|
2025-06-20 00:30:30 -07:00
|
|
|
}
|
2025-06-17 08:24:07 -07:00
|
|
|
|
2025-06-20 00:30:30 -07:00
|
|
|
return null;
|
|
|
|
|
} catch (e) {
|
|
|
|
|
console.warn('Failed to check for updates: ' + e);
|
|
|
|
|
return null;
|
|
|
|
|
}
|
2025-06-17 08:24:07 -07:00
|
|
|
}
|