filesInDirectory method

Future<List<String>> filesInDirectory(
  1. String directory, {
  2. required String workingDirectory,
  3. List<String> ignoreDirs = const [],
})

Implementation

Future<List<String>> filesInDirectory(
  String directory, {
  required String workingDirectory,
  List<String> ignoreDirs = const [],
}) async {
  final directories = switch (platform) {
    Platform(isLinux: true) || Platform(isMacOS: true) => await _findLinux(
      directory,
      workingDirectory: workingDirectory,
      file: false,
      ignoreDirs: ignoreDirs,
    ),
    Platform(isWindows: true) => await _findWindowsDirectory(
      directory,
      workingDirectory: workingDirectory,
      ignoreDirs: ignoreDirs,
    ),
    _ => throw UnsupportedError(
      'Unsupported platform: ${platform.operatingSystem}',
    ),
  };

  final futures = <Future<List<String>>>[];

  for (final directory in directories) {
    futures.add(
      file('*', workingDirectory: directory, ignoreDirs: ignoreDirs),
    );
  }

  final results = await Future.wait(futures);
  return results.expand((e) => e).toList();
}