fromGit static method

Future<VersionModel> fromGit(
  1. String ref,
  2. String baseUri,
  3. String outputDir
)

Implementation

static Future<VersionModel> fromGit(
    String ref, String baseUri, String outputDir) async {
  final dateOutput = await Process.run(
      'git', ['--no-pager', 'show', '-s', '--format=%ct', ref]);
  final timestamp = gitDateParser(dateOutput.stdout);
  final pubspecOutput =
      await Process.run('git', ['--no-pager', 'show', '$ref:./pubspec.yaml']);
  final pubspec = loadYaml(pubspecOutput.stdout) as YamlMap;
  final version = pubspec['version'] as String;
  final name = pubspec['name'] as String;

  final directory = Directory('$outputDir/packages/$name/versions/');
  directory.create(recursive: true);

  final path = '/packages/$name/versions/$version.tar';

  await Process.run(
      'git', ['archive', '--output=$outputDir$path', '--format=tar', ref]);

  await Process.run('gzip', ['$outputDir$path']);

  final archiveUrl = baseUri + path;
  return VersionModel(
    version: version,
    pubspec: jsonDecode(json.encode(pubspec)) as Map<String, dynamic>,
    archiveUrl: archiveUrl + '.gz',
    published: timestamp,
  );
}