getModifiedDartFiles method
Finds Dart files modified between baseCommit and HEAD.
Implementation
Future<List<String>> getModifiedDartFiles(
String baseCommit, {
List<String> targetPaths = const [],
}) async {
final repoRoot = await getRepoRoot();
final args = ['diff', '--name-only', '--diff-filter=ACMR', baseCommit];
final res = await _runGit(args);
if (res.exitCode != 0) {
throw ArgumentError(
'Git diff failed against base commit "$baseCommit": '
'${(res.stderr as String).trim()}',
);
}
final output = (res.stdout as String).trim();
if (output.isEmpty) {
return [];
}
final allChanged = output.split('\n').map((l) => l.trim()).toList();
final results = <String>[];
for (final relPath in allChanged) {
if (relPath.isEmpty || p.extension(relPath) != '.dart') {
continue;
}
if (isExcludedPath(relPath)) {
continue;
}
final absPath = p.join(repoRoot, relPath);
if (targetPaths.isNotEmpty) {
final matches = targetPaths.any((t) {
final absTarget = p.join(repoRoot, t);
return p.isWithin(absTarget, absPath) || p.equals(absTarget, absPath);
});
if (!matches) {
continue;
}
}
results.add(relPath);
}
return results;
}