initConfig function
Implementation
Config initConfig({String? configFilePath, bool strict = false}) {
final resolvedConfigFilePath =
configFilePath ??
'${Directory.current.path}${Platform.pathSeparator}bin${Platform.pathSeparator}config.json';
const String fallbackVersion = daemonVersion;
final File configFile = File(resolvedConfigFilePath);
Config buildDefaultConfig() =>
Config(version: fallbackVersion, server: Server(), log: Log());
if (!configFile.existsSync()) {
if (strict) {
throw FileSystemException(
'Config file does not exist',
resolvedConfigFilePath,
);
}
return buildDefaultConfig();
}
try {
final String configJsonString = configFile.readAsStringSync();
final Map<String, dynamic> configJson = jsonDecode(configJsonString);
configJson['version'] = fallbackVersion;
final Config loadedConfig = Config.fromJson(configJson);
loadedConfig.server ??= Server();
loadedConfig.log ??= Log();
loadedConfig.version = fallbackVersion;
return loadedConfig;
} catch (_) {
if (strict) rethrow;
return buildDefaultConfig();
}
}