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).
20 lines
711 B
TypeScript
20 lines
711 B
TypeScript
import path from "path";
|
|
import { getInstanceRoot } from "app/server/lib/places";
|
|
import { IGristCoreConfig, loadGristCoreConfigFile } from "app/server/lib/configCore";
|
|
import log from "app/server/lib/log";
|
|
|
|
const globalConfigPath: string = path.join(getInstanceRoot(), 'config.json');
|
|
let cachedGlobalConfig: IGristCoreConfig | undefined = undefined;
|
|
|
|
/**
|
|
* Retrieves the cached grist config, or loads it from the default global path.
|
|
*/
|
|
export async function getGlobalConfig(): Promise<IGristCoreConfig> {
|
|
if (!cachedGlobalConfig) {
|
|
log.info(`Loading config file from ${globalConfigPath}`);
|
|
cachedGlobalConfig = await loadGristCoreConfigFile(globalConfigPath);
|
|
}
|
|
|
|
return cachedGlobalConfig;
|
|
}
|