mirror of
https://github.com/gristlabs/grist-core.git
synced 2024-10-27 20:44:07 +00:00
6908807236
This adds a config file that's loaded very early on during startup. It enables us to save/load settings from within Grist's admin panel, that affect the startup of the FlexServer. The config file loading: - Is type-safe, - Validates the config file on startup - Provides a path to upgrade to future versions. It should be extensible from other versions of Grist (such as desktop), by overriding `getGlobalConfig` in stubs. ---- Some minor refactors needed to occur to make this possible. This includes: - Extracting config loading into its own module (out of FlexServer). - Cleaning up the `loadConfig` function in FlexServer into `loadLoginSystem` (which is what its main purpose was before).
29 lines
901 B
TypeScript
29 lines
901 B
TypeScript
import {
|
|
createConfigValue,
|
|
FileConfig,
|
|
fileConfigAccessorFactory,
|
|
IWritableConfigValue
|
|
} from "./config";
|
|
import { convertToCoreFileContents, IGristCoreConfigFileLatest } from "./configCoreFileFormats";
|
|
|
|
export type Edition = "core" | "enterprise";
|
|
|
|
/**
|
|
* Config options for Grist Core.
|
|
*/
|
|
export interface IGristCoreConfig {
|
|
edition: IWritableConfigValue<Edition>;
|
|
}
|
|
|
|
export async function loadGristCoreConfigFile(configPath?: string): Promise<IGristCoreConfig> {
|
|
const fileConfig = configPath ? await FileConfig.create(configPath, convertToCoreFileContents) : undefined;
|
|
return loadGristCoreConfig(fileConfig);
|
|
}
|
|
|
|
export function loadGristCoreConfig(fileConfig?: FileConfig<IGristCoreConfigFileLatest>): IGristCoreConfig {
|
|
const fileConfigValue = fileConfigAccessorFactory(fileConfig);
|
|
return {
|
|
edition: createConfigValue<Edition>("core", fileConfigValue("edition"))
|
|
};
|
|
}
|