X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=src%2Futils%2FConfiguration.ts;h=1f370480d4d1b6fc47828792ccbf8271cfb81724;hb=b1f8c0c6252ee6158901c60dfa8bb6333a9e84b7;hp=d994422b07bf91e176fd7d36bc680318fadabc4c;hpb=b2c0174269cf52d48b2e61b7e18f246d661cc6af;p=e-mobility-charging-stations-simulator.git diff --git a/src/utils/Configuration.ts b/src/utils/Configuration.ts index d994422b..1f370480 100644 --- a/src/utils/Configuration.ts +++ b/src/utils/Configuration.ts @@ -56,6 +56,7 @@ export class Configuration { 'config.json', ); + private static configurationFileReloading = false; private static configurationData?: ConfigurationData; private static configurationFileWatcher?: FSWatcher; private static configurationSectionCache = new Map< @@ -546,13 +547,30 @@ export class Configuration { private static getConfigurationFileWatcher(): FSWatcher | undefined { try { return watch(Configuration.configurationFile, (event, filename): void => { - if (filename!.trim()!.length > 0 && event === 'change') { + if ( + !Configuration.configurationFileReloading && + filename!.trim()!.length > 0 && + event === 'change' + ) { + Configuration.configurationFileReloading = true; + const consoleWarnOnce = once(console.warn, this); + consoleWarnOnce( + `${chalk.green(configurationLogPrefix())} ${chalk.yellow( + `${FileType.Configuration} ${this.configurationFile} file have changed, reload`, + )}`, + ); delete Configuration.configurationData; Configuration.configurationSectionCache.clear(); if (!isUndefined(Configuration.configurationChangeCallback)) { - Configuration.configurationChangeCallback().catch((error) => { - throw typeof error === 'string' ? new Error(error) : error; - }); + Configuration.configurationChangeCallback() + .catch((error) => { + throw typeof error === 'string' ? new Error(error) : error; + }) + .finally(() => { + Configuration.configurationFileReloading = false; + }); + } else { + Configuration.configurationFileReloading = false; } } });