blob: f29e7372042dbe588d6255e90dd64d03e5321b43 [file] [log] [blame]
library pub.barback;
import 'package:barback/barback.dart';
import 'package:path/path.dart' as p;
import 'version.dart';
final pubConstraints = {
"barback": new VersionConstraint.parse(">=0.13.0 <0.15.3"),
"source_span": new VersionConstraint.parse(">=1.0.0 <2.0.0"),
"stack_trace": new VersionConstraint.parse(">=0.9.1 <2.0.0")
};
Uri idToPackageUri(AssetId id) {
if (!id.path.startsWith('lib/')) {
throw new ArgumentError("Asset id $id doesn't identify a library.");
}
return new Uri(
scheme: 'package',
path: p.url.join(id.package, id.path.replaceFirst('lib/', '')));
}
AssetId packagesUrlToId(Uri url) {
var parts = p.url.split(url.path);
if (parts.isNotEmpty && parts.first == "/") parts = parts.skip(1).toList();
if (parts.isEmpty) return null;
var index = parts.indexOf("packages");
if (index == -1) return null;
if (parts.length <= index + 1) {
throw new FormatException(
'Invalid URL path "${url.path}". Expected package name ' 'after "packages".');
}
var package = parts[index + 1];
var assetPath = p.url.join("lib", p.url.joinAll(parts.skip(index + 2)));
return new AssetId(package, assetPath);
}