load method
Loads config using precedence: structure.yaml > pubspec.yaml.flutter_sherpa.arch_sherpa > defaults.
Implementation
ConfigLoadResult load({required Directory projectRoot}) {
final defaultsMap = ArchSherpaConfig.toMap(ArchSherpaConfig.defaults());
final structureFile = File('${projectRoot.path}/structure.yaml');
if (structureFile.existsSync()) {
final structureMap = _parseYamlFile(structureFile);
final warnings = _detectDeprecations(structureMap);
final normalized = _normalizeAliases(structureMap);
final merged = _deepMerge(defaultsMap, normalized);
return ConfigLoadResult(
config: ArchSherpaConfig.fromDynamicMap(merged),
source: ConfigSource.structureYaml,
warnings: warnings,
);
}
final pubspecFile = File('${projectRoot.path}/pubspec.yaml');
if (pubspecFile.existsSync()) {
final pubspecMap = _parseYamlFile(pubspecFile);
final flutterSherpa = _asMap(pubspecMap['flutter_sherpa']);
final archSherpa = _asMap(flutterSherpa['arch_sherpa']);
if (archSherpa.isNotEmpty) {
final warnings = _detectDeprecations(archSherpa);
final normalized = _normalizeAliases(archSherpa);
final merged = _deepMerge(defaultsMap, normalized);
return ConfigLoadResult(
config: ArchSherpaConfig.fromDynamicMap(merged),
source: ConfigSource.pubspecYaml,
warnings: warnings,
);
}
}
return ConfigLoadResult(
config: ArchSherpaConfig.defaults(),
source: ConfigSource.defaults,
warnings: const [],
);
}