fetch method

  1. @override
Future<void> fetch()
override

Future that completes when the repository is available in the cacheDirectory.

Implementation

@override
Future<void> fetch() async {
  if (await Directory(cache).exists()) {
    return;
  }

  var result = await Process.run(
      'git', 'clone --depth 1 $url $cache'.split(' '),
      stdoutEncoding: utf8);
  if (result.exitCode != 0) {
    stderr.writeln('error cloning repo');
    stderr.write(result.stdout);
    stderr.write(result.stderr);
    exit(1);
  }

  if (ref != null) {
    result = await Process.run(
      'git',
      'checkout $ref'.split(' '),
      stdoutEncoding: utf8,
      workingDirectory: cache,
    );
    if (result.exitCode != 0) {
      stderr.writeln('error checkingout $ref');
      stderr.write(result.stdout);
      stderr.write(result.stderr);
      exit(1);
    }
  }
}