cloneDependency method

Future<void> cloneDependency({
  1. required Directory workspaceDir,
  2. required String dependency,
  3. required String repositoryUrl,
  4. required GgLog ggLog,
  5. String? reference,
  6. Future<ProcessResult> processRun(
    1. String,
    2. List<String>, {
    3. String? workingDirectory,
    })?,
})

Clone the dependency from GitHub

Implementation

Future<void> cloneDependency({
  required Directory workspaceDir,
  required String dependency,
  required String repositoryUrl,
  required GgLog ggLog,
  String? reference,
  Future<ProcessResult> Function(
    String,
    List<String>, {
    String? workingDirectory,
  })? processRun,
}) async {
  processRun ??= Process.run;

  ggLog('Cloning $dependency into workspace...');

  // coverage:ignore-start
  List<String> arguments = ['clone', repositoryUrl];
  if (reference != null) {
    arguments.add('-b');
    arguments.add(reference);
  }

  final cloneResult = await processRun(
    'git',
    arguments,
    workingDirectory: workspaceDir.path,
  );

  if (cloneResult.exitCode != 0) {
    throw Exception(
      'Failed to clone $dependency. Exit code: ${cloneResult.exitCode}',
    );
  }
  // coverage:ignore-end
}