getProjectFiles method

Future<List<String>> getProjectFiles(
  1. String path, {
  2. bool respectGitignore = true,
})

Returns all project files, optionally respecting .gitignore.

Implementation

Future<List<String>> getProjectFiles(
  String path, {
  bool respectGitignore = true,
}) async {
  if (respectGitignore) {
    try {
      final result = await Process.run(
        'git',
        ['ls-files', '--cached', '--others', '--exclude-standard'],
        workingDirectory: path,
        stdoutEncoding: utf8,
      );
      if (result.exitCode == 0) {
        final output = (result.stdout as String).trim();
        if (output.isNotEmpty) {
          return LineSplitter.split(output).toList();
        }
      }
    } catch (_) {
      // Fall through to manual listing.
    }
  }

  return _listFilesRecursively(path);
}