in lib/src/packages_file.dart [158:200]
void write(StringSink output, PackageConfig config,
{Uri? baseUri, String? comment}) {
if (baseUri != null && !baseUri.isAbsolute) {
throw PackageConfigArgumentError(baseUri, 'baseUri', 'Must be absolute');
}
if (comment != null) {
var lines = comment.split('\n');
if (lines.last.isEmpty) lines.removeLast();
for (var commentLine in lines) {
output.write('# ');
output.writeln(commentLine);
}
} else {
output.write('# generated by package:package_config at ');
output.write(DateTime.now());
output.writeln();
}
for (var package in config.packages) {
var packageName = package.name;
var uri = package.packageUriRoot;
// Validate packageName.
if (!isValidPackageName(packageName)) {
throw PackageConfigArgumentError(
config, 'config', '"$packageName" is not a valid package name');
}
if (uri.scheme == 'package') {
throw PackageConfigArgumentError(
config, 'config', 'Package location must not be a package URI: $uri');
}
output.write(packageName);
output.write(':');
// If baseUri is provided, make the URI relative to baseUri.
if (baseUri != null) {
uri = relativizeUri(uri, baseUri)!;
}
if (!uri.path.endsWith('/')) {
uri = uri.replace(path: uri.path + '/');
}
output.write(uri);
output.writeln();
}
}