evaluateTargetFiles function
Implementation
(Set<String> files, Set<String> exclusions) evaluateTargetFiles(String? root) {
late Directory rootDir;
// Find the root directory to base the analysis on
if (root == null) {
rootDir = findProjectRoot(Directory.current.path);
if (rootDir.path != Directory.current.path) {
logger.info("Changing root directory to $rootDir");
}
} else {
rootDir = Directory(root);
if (!rootDir.existsSync()) {
logger.err('Root directory does not exist: $root');
exit(1);
}
}
// Detect the files to analyze
final analysisOptionsFile = File('$rootDir.path/analysis_options.yaml');
ApiGuardConfig config;
if (analysisOptionsFile.existsSync()) {
config = ApiGuardConfig.fromYaml(
analysisOptionsFile,
);
} else {
config = ApiGuardConfig.defaultConfig();
}
final targetFiles = <String>{};
for (final include in config.include) {
targetFiles.addAll(
Glob(include).listSync(root: rootDir.path).map((e) => normalize(absolute(e.path))),
);
}
final exclusions = <String>{};
for (final exclude in config.exclude) {
exclusions.addAll(
Glob(exclude).listSync(root: rootDir.path).map((e) => normalize(absolute(e.path))),
);
}
return (targetFiles.difference(exclusions), exclusions);
}