resolveRemote method
By default, a generic PubEntry does not fetch a resolved URL.
Implementation
@override
Future resolveRemote() async {
final repoUrl = description?.url;
if (repoUrl == null) {
print('Error: Git repository URL is not available for package $name.');
return;
}
try {
// Execute 'git ls-remote <repository_url> HEAD'
final result = await Process.run('git', ['ls-remote', repoUrl, 'HEAD']);
if (result.exitCode == 0) {
final output = result.stdout.toString().trim();
// Expected output format: <commit_hash>\tHEAD
if (output.isNotEmpty && output.contains('\t')) {
_gitRevision = output.split('\t').first;
return;
} else {
print('Error: Could not parse HEAD revision for $repoUrl: "$output"');
}
} else {
print('Error running git ls-remote for :');
print('$repoUrl (exit code ${result.exitCode}): ${result.stderr}');
}
} catch (e) {
print(
'Exception while trying to get remote HEAD revision for $repoUrl: $e');
return;
}
}