copyDirectory static method
Implementation
static Future<void> copyDirectory(
String source,
String destination,
bool verbose,
) async {
final src = Directory(source);
await for (final entity in src.list(recursive: true, followLinks: false)) {
final rel = path.relative(entity.path, from: source);
final segments = path.split(rel);
// Skip certain directories and files
if (segments.first.startsWith('.git') ||
segments.first == '.dart_tool' ||
segments.first == 'build' ||
segments.first == '.idea' ||
segments.first == '.DS_Store') {
continue;
}
final destPath = path.join(destination, rel);
if (entity is File) {
final destFile = File(destPath);
await destFile.parent.create(recursive: true);
await destFile.writeAsBytes(await entity.readAsBytes());
if (verbose) {
stdout.writeln(' ${Constants.fileMessage} $rel');
}
} else if (entity is Directory) {
await Directory(destPath).create(recursive: true);
}
}
}