initConfig function
Implementation
Config initConfig() {
final String configFilePath =
'${Directory.current.path}${Platform.pathSeparator}bin${Platform.pathSeparator}config.json';
final String fallbackVersion = getVersionFromPubspec() ?? '0.0.0';
final File configFile = File(configFilePath);
Config buildDefaultConfig() =>
Config(version: fallbackVersion, server: Server(), log: Log());
if (!configFile.existsSync()) {
return buildDefaultConfig();
}
try {
final String configJsonString = configFile.readAsStringSync();
final Map<String, dynamic> configJson = jsonDecode(configJsonString);
final Config loadedConfig = Config.fromJson(configJson);
loadedConfig.server ??= Server();
loadedConfig.log ??= Log();
final String resolvedVersion = fallbackVersion.isNotEmpty
? fallbackVersion
: (loadedConfig.version.isEmpty ? '0.0.0' : loadedConfig.version);
loadedConfig.version = resolvedVersion;
return loadedConfig;
} catch (_) {
return buildDefaultConfig();
}
}