diffFiles method

Future<List<String>> diffFiles({
  1. required List<String> diffArgs,
  2. required String diffFilters,
})

Implementation

Future<List<String>> diffFiles({
  required List<String> diffArgs,
  required String diffFilters,
}) async {
  final result = await process.run('git', [
    'diff',
    ...diffArgs,
    if (diffFilters.isNotEmpty) '--diff-filter=$diffFilters',
    '--name-only',
    '-z',
  ]);

  final out = result.stdout.trim();

  final files =
      out.split('\x00').where((element) => element.isNotEmpty).toList();

  if (remoteName case final String remoteName
      when files.isEmpty && diffArgs.contains('@{u}')) {
    final currentBranch = await getCurrentBranch();

    final upstream = '$remoteName/$currentBranch';

    return diffFiles(
      diffArgs: [
        for (final arg in diffArgs)
          if (arg == '@{u}') upstream else arg,
      ],
      diffFilters: diffFilters,
    );
  }

  return files;
}