loadDirectory method

Future<List<ContentDocument>> loadDirectory(
  1. String dirPath
)

Load all content files from a directory

Implementation

Future<List<ContentDocument>> loadDirectory(String dirPath) async {
  final fullPath = p.join(config.contentDir, dirPath);
  final dir = Directory(fullPath);

  if (!await dir.exists()) {
    return [];
  }

  final documents = <ContentDocument>[];

  await for (final entity in dir.list(recursive: true)) {
    if (entity is File) {
      final ext = p.extension(entity.path);
      if (config.extensions.contains(ext)) {
        final relativePath = p.relative(entity.path, from: config.contentDir);
        final doc = await _parseFile(entity, relativePath);
        if (doc != null && (config.includeDrafts || !doc.draft)) {
          documents.add(doc);
        }
      }
    }
  }

  // Sort by order, then by title
  documents.sort((a, b) {
    final orderCompare = a.order.compareTo(b.order);
    return orderCompare != 0 ? orderCompare : a.title.compareTo(b.title);
  });

  return documents;
}