fromGit static method
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/');
await 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,
);
}