load function
Implementation
Future<Map<String, RuleConfig>> load({
required String file,
String? dir,
}) async {
Map<String, RuleConfig> rules = {};
Uri? uri;
if (!file.startsWith('package:')) {
uri = toUri(join(dir ?? Directory.current.path, file));
dir = dirname(uri.path);
} else {
uri = await Isolate.resolvePackageUri(Uri.parse(file));
dir = uri?.path.split('/lib/').first;
}
if (uri != null) {
final file = File.fromUri(uri);
if (await file.exists()) {
final yaml = loadYaml(await file.readAsString());
final include = yaml?['include'] as String?;
final rulesMap = yaml?['rules'] as Map?;
if (rulesMap != null) {
for (var entry in rulesMap.entries) {
rules[entry.key] = _extractRuleConfig(entry.value);
}
}
if (include != null) {
final upstream = await load(dir: dir, file: include);
if (upstream.isNotEmpty) {
rules = {
...upstream,
...rules,
};
}
}
}
}
return rules;
}