mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-20 11:00:40 -07:00
46 lines
1.2 KiB
TypeScript
46 lines
1.2 KiB
TypeScript
|
|
/**
|
||
|
|
* @license
|
||
|
|
* Copyright 2025 Google LLC
|
||
|
|
* SPDX-License-Identifier: Apache-2.0
|
||
|
|
*/
|
||
|
|
|
||
|
|
import fs from 'fs/promises';
|
||
|
|
import * as os from 'os';
|
||
|
|
|
||
|
|
type WarningCheck = {
|
||
|
|
id: string;
|
||
|
|
check: (workspaceRoot: string) => Promise<string | null>;
|
||
|
|
};
|
||
|
|
|
||
|
|
// Individual warning checks
|
||
|
|
const homeDirectoryCheck: WarningCheck = {
|
||
|
|
id: 'home-directory',
|
||
|
|
check: async (workspaceRoot: string) => {
|
||
|
|
try {
|
||
|
|
const [workspaceRealPath, homeRealPath] = await Promise.all([
|
||
|
|
fs.realpath(workspaceRoot),
|
||
|
|
fs.realpath(os.homedir()),
|
||
|
|
]);
|
||
|
|
|
||
|
|
if (workspaceRealPath === homeRealPath) {
|
||
|
|
return 'You are running Gemini CLI in your home directory. It is recommended to run in a project-specific directory.';
|
||
|
|
}
|
||
|
|
return null;
|
||
|
|
} catch (_err: unknown) {
|
||
|
|
return 'Could not verify the current directory due to a file system error.';
|
||
|
|
}
|
||
|
|
},
|
||
|
|
};
|
||
|
|
|
||
|
|
// All warning checks
|
||
|
|
const WARNING_CHECKS: readonly WarningCheck[] = [homeDirectoryCheck];
|
||
|
|
|
||
|
|
export async function getUserStartupWarnings(
|
||
|
|
workspaceRoot: string,
|
||
|
|
): Promise<string[]> {
|
||
|
|
const results = await Promise.all(
|
||
|
|
WARNING_CHECKS.map((check) => check.check(workspaceRoot)),
|
||
|
|
);
|
||
|
|
return results.filter((msg) => msg !== null);
|
||
|
|
}
|