Move settings error throwing to loadSettings (#7605)

This commit is contained in:
Tommaso Sciortino
2025-09-03 10:41:53 -07:00
committed by GitHub
parent d2ae869bb4
commit e6e60861e5
14 changed files with 50 additions and 205 deletions

View File

@@ -10,6 +10,7 @@ import { homedir, platform } from 'node:os';
import * as dotenv from 'dotenv';
import process from 'node:process';
import {
FatalConfigError,
GEMINI_CONFIG_DIR as GEMINI_DIR,
getErrorMessage,
Storage,
@@ -412,7 +413,6 @@ export class LoadedSettings {
systemDefaults: SettingsFile,
user: SettingsFile,
workspace: SettingsFile,
errors: SettingsError[],
isTrusted: boolean,
migratedInMemorScopes: Set<SettingScope>,
) {
@@ -420,7 +420,6 @@ export class LoadedSettings {
this.systemDefaults = systemDefaults;
this.user = user;
this.workspace = workspace;
this.errors = errors;
this.isTrusted = isTrusted;
this.migratedInMemorScopes = migratedInMemorScopes;
this._merged = this.computeMergedSettings();
@@ -430,7 +429,6 @@ export class LoadedSettings {
readonly systemDefaults: SettingsFile;
readonly user: SettingsFile;
readonly workspace: SettingsFile;
readonly errors: SettingsError[];
readonly isTrusted: boolean;
readonly migratedInMemorScopes: Set<SettingScope>;
@@ -570,7 +568,9 @@ export function loadEnvironment(settings: Settings): void {
* Loads settings from user and workspace directories.
* Project settings override user settings.
*/
export function loadSettings(workspaceDir: string): LoadedSettings {
export function loadSettings(
workspaceDir: string = process.cwd(),
): LoadedSettings {
let systemSettings: Settings = {};
let systemDefaultSettings: Settings = {};
let userSettings: Settings = {};
@@ -703,7 +703,17 @@ export function loadSettings(workspaceDir: string): LoadedSettings {
workspaceSettings = resolveEnvVarsInObject(workspaceSettings);
// Create LoadedSettings first
const loadedSettings = new LoadedSettings(
if (settingsErrors.length > 0) {
const errorMessages = settingsErrors.map(
(error) => `Error in ${error.path}: ${error.message}`,
);
throw new FatalConfigError(
`${errorMessages.join('\n')}\nPlease fix the configuration file(s) and try again.`,
);
}
return new LoadedSettings(
{
path: systemSettingsPath,
settings: systemSettings,
@@ -720,12 +730,9 @@ export function loadSettings(workspaceDir: string): LoadedSettings {
path: workspaceSettingsPath,
settings: workspaceSettings,
},
settingsErrors,
isTrusted,
migratedInMemorScopes,
);
return loadedSettings;
}
export function saveSettings(settingsFile: SettingsFile): void {