readFromFileSystem static method

SlangFileCollection readFromFileSystem({
  1. required bool verbose,
})

Implementation

static SlangFileCollection readFromFileSystem({
  required bool verbose,
}) {
  // config file must be in top-level directory
  final topLevelFiles =
      Directory.current.listSync(recursive: false).whereType<File>().toList();

  final config = readConfigFromFileSystem(
    files: topLevelFiles,
    verbose: verbose,
  );

  final List<File> files;
  if (config.inputDirectory != null) {
    files = Directory(config.inputDirectory!)
        .listSync(recursive: true)
        .whereType<File>()
        .toList();
  } else {
    files = _getFilesBreadthFirst(
      rootDirectory: Directory.current,
      ignoreTopLevelDirectories: {
        'build',
        'ios',
        'android',
        'web',
        'macos',
        'linux',
        'windows',
        'test',
      },
      ignoreDirectories: {
        '.fvm',
        '.flutter.git',
        '.dart_tool',
        '.symlinks',
        'cargokit_build',
      },
    );
  }

  String currentDirectory = Directory.current.path.replaceAll('\\', '/');
  if (!currentDirectory.endsWith('/')) {
    currentDirectory += '/';
  }

  return fromFileModel(
    config: config,
    files:
        files.where((f) => f.path.endsWith(config.inputFilePattern)).map((f) {
      return PlainTranslationFile(
        path: f.path.replaceAll('\\', '/').replaceAll(currentDirectory, ''),
        read: () async => f.readAsStringSync(),
      );
    }),
  );
}