filesInDirectory method

  1. @override
Future<List<String>> filesInDirectory(
  1. String directory, {
  2. required String workingDirectory,
  3. List<String> ignoreDirs = const [],
  4. bool recursive = true,
  5. DateTime? lastModified,
})
override

Implementation

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

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

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

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