Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1663)

Unified Diff: sdk/lib/_internal/pub/lib/src/barback.dart

Issue 133843006: Support configuring dart2js from the pubspec. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: code reivew Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: sdk/lib/_internal/pub/lib/src/barback.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback.dart b/sdk/lib/_internal/pub/lib/src/barback.dart
index a5a48a64dd5f2d2f9face248b0dc1e6c2c31e352..785d32f1426a0bad0d30c0e80b76283ee3e939fe 100644
--- a/sdk/lib/_internal/pub/lib/src/barback.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback.dart
@@ -10,6 +10,7 @@ import 'package:barback/barback.dart';
import 'package:path/path.dart' as path;
import 'package:stack_trace/stack_trace.dart';
+import 'barback/dart2js_transformer.dart';
import 'barback/load_all_transformers.dart';
import 'barback/pub_package_provider.dart';
import 'barback/server.dart';
@@ -42,6 +43,9 @@ export 'barback/sources.dart' show WatcherType;
/// incremented to synchronize with that.
final supportedVersion = new Version(0, 11, 0);
+/// A list of the names of all built-in transformers that pub exposes.
+const _BUILT_IN_TRANSFORMERS = const ['\$dart2js'];
+
/// An identifier for a transformer and the configuration that will be passed to
/// it.
///
@@ -63,9 +67,12 @@ class TransformerId {
/// The configuration to pass to the transformer.
///
- /// This will be null if no configuration was provided.
+ /// This will be an empty map if no configuration was provided.
final Map configuration;
+ /// Whether this ID points to a built-in transformer exposed by pub.
+ bool get isBuiltInTransformer => package.startsWith('\$');
+
/// Parses a transformer identifier.
///
/// A transformer identifier is a string of the form "package_name" or
@@ -85,13 +92,11 @@ class TransformerId {
return new TransformerId(parts.first, parts.last, configuration);
}
- TransformerId(this.package, this.path, this.configuration) {
- if (configuration == null) return;
- for (var reserved in ['include', 'exclude']) {
- if (!configuration.containsKey(reserved)) continue;
- throw new FormatException('Transformer configuration may not include '
- 'reserved key "$reserved".');
- }
+ TransformerId(this.package, this.path, Map configuration)
+ : configuration = configuration == null ? {} : configuration {
+ if (!package.startsWith('\$')) return;
+ if (_BUILT_IN_TRANSFORMERS.contains(package)) return;
+ throw new FormatException('Unsupported built-in transformer $package.');
}
// TODO(nweiz): support deep equality on [configuration] as well.
@@ -134,6 +139,19 @@ class TransformerId {
Future<BarbackServer> createServer(String host, int port, PackageGraph graph,
BarbackMode mode, {Iterable<Transformer> builtInTransformers,
WatcherType watcher: WatcherType.AUTO}) {
+
+ // If the entrypoint package manually configures the dart2js transformer,
+ // remove it from the built-in transformer list.
+ //
+ // TODO(nweiz): if/when we support more built-in transformers, make this more
+ // general.
+ var containsDart2Js = graph.entrypoint.root.pubspec.transformers.any(
+ (transformers) => transformers.any((id) => id.package == '\$dart2js'));
+ if (containsDart2Js) {
+ builtInTransformers = builtInTransformers.where(
+ (transformer) => transformer is! Dart2JSTransformer);
+ }
+
var provider = new PubPackageProvider(graph);
var barback = new Barback(provider);
« no previous file with comments | « no previous file | sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart » ('j') | sdk/lib/_internal/pub/lib/src/dart.dart » ('J')

Powered by Google App Engine
This is Rietveld 408576698