libgit2dart/test/helpers/util.dart
Aleksey Kulikov eacbea8f19 docs: add examples
closes #6
2022-05-03 21:03:03 +03:00

34 lines
1.2 KiB
Dart

import 'dart:io';
import 'package:libgit2dart/libgit2dart.dart';
import 'package:path/path.dart' as p;
/// Copies repository at provided [repoDir] into system's temp directory.
Directory setupRepo(Directory repoDir) {
Libgit2.ownerValidation = false;
final tmpDir = Directory.systemTemp.createTempSync('testrepo');
copyRepo(from: repoDir, to: tmpDir);
return tmpDir;
}
void copyRepo({required Directory from, required Directory to}) {
for (final entity in from.listSync()) {
if (entity is Directory) {
Directory newDir;
if (p.basename(entity.path) == '.gitdir') {
newDir = Directory(p.join(to.absolute.path, '.git'))..createSync();
} else {
newDir = Directory(p.join(to.absolute.path, p.basename(entity.path)))
..createSync();
}
copyRepo(from: entity.absolute, to: newDir);
} else if (entity is File) {
if (p.basename(entity.path) == 'gitignore') {
entity.copySync(p.join(to.path, '.gitignore'));
} else if (p.basename(entity.path) == 'gitattributes') {
entity.copySync(p.join(to.path, '.gitattributes'));
} else {
entity.copySync(p.join(to.path, p.basename(entity.path)));
}
}
}
}