Recursieve directory walk centraliseren (3 near-identieke implementaties) #2077

Closed
opened 2026-09-13 08:06:05 +00:00 by brenno · 0 comments
Owner

Probleem

Drie services doorlopen zelfstandig een directory-boom met dezelfde structuur: dir.list(), file extensie-filter, directory recursie met depth-limit, .-dirs en ignored-dirs overslaan.

Betrokken bestanden

Bestand Functie Regels
services/image_reference_service.dart findDeckFiles 33-66
services/image_library_scanner.dart scan 67-107
services/file/file_service_scan.dart walkMarkdownFiles 26-90

Gedeelde structuur:

entries = await dir.list(followLinks: false).toList();
for (final entity in entries) {
  if (entity is File) { ... extensie-filter ... }
  else if (entity is Directory && depth < maxDepth) {
    final name = p.basename(entity.path);
    if (_ignoredDirs.contains(name) || name.startsWith('.')) continue;
    await walk(entity, depth + 1);
  }
}

Verschillen

Extensiefilter, resultaatverzameling en extra budgetcontroles verschillen per caller.

Voorstel

Overweeg een DirectoryWalker helper die extensie-filter, depth-limit en ignored-dirs accepteert, en per file een callback aanroept.

Schatting

~40-50 regels verwijderbaar.

Labels

duplicate, enhancement

## Probleem Drie services doorlopen zelfstandig een directory-boom met dezelfde structuur: `dir.list()`, file extensie-filter, directory recursie met depth-limit, `.`-dirs en ignored-dirs overslaan. ## Betrokken bestanden | Bestand | Functie | Regels | |---|---|---| | `services/image_reference_service.dart` | `findDeckFiles` | 33-66 | | `services/image_library_scanner.dart` | `scan` | 67-107 | | `services/file/file_service_scan.dart` | `walkMarkdownFiles` | 26-90 | Gedeelde structuur: ```dart entries = await dir.list(followLinks: false).toList(); for (final entity in entries) { if (entity is File) { ... extensie-filter ... } else if (entity is Directory && depth < maxDepth) { final name = p.basename(entity.path); if (_ignoredDirs.contains(name) || name.startsWith('.')) continue; await walk(entity, depth + 1); } } ``` ## Verschillen Extensiefilter, resultaatverzameling en extra budgetcontroles verschillen per caller. ## Voorstel Overweeg een `DirectoryWalker` helper die extensie-filter, depth-limit en ignored-dirs accepteert, en per file een callback aanroept. ## Schatting ~40-50 regels verwijderbaar. ## Labels duplicate, enhancement
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
LibreKAT/Ocideck#2077
No description provided.