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

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

Issue 141113011: Support directories other than "web" in pub build. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Revise. 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/dart2js_transformer.dart
diff --git a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
index aa09244ed04baef220f855c6ed145c6783e178a1..f6f64c5ec3d9dbe20eecd4b840a5e73430da57ed 100644
--- a/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
+++ b/sdk/lib/_internal/pub/lib/src/barback/dart2js_transformer.dart
@@ -23,6 +23,7 @@ import '../io.dart';
import '../package.dart';
import '../package_graph.dart';
import '../utils.dart';
+import 'build_environment.dart';
/// The set of all valid configuration options for this transformer.
final _validOptions = new Set<String>.from([
@@ -33,14 +34,9 @@ final _validOptions = new Set<String>.from([
/// A [Transformer] that uses dart2js's library API to transform Dart
/// entrypoints in "web" to JavaScript.
class Dart2JSTransformer extends Transformer {
- final PackageGraph _graph;
+ final BuildEnvironment _environment;
final BarbackSettings _settings;
- /// The [AssetId]s the transformer has discovered so far. Used by pub build
- /// to determine where to copy the JS bootstrap files.
- // TODO(rnystrom): Do something cleaner for this, or eliminate those files.
- final entrypoints = new Set<AssetId>();
-
/// If this is non-null, then the transformer is currently being applied, so
/// subsequent calls to [apply] will wait for this to finish before
/// proceeding.
@@ -51,7 +47,7 @@ class Dart2JSTransformer extends Transformer {
/// is here: https://code.google.com/p/dart/issues/detail?id=14730.
Future _running;
- Dart2JSTransformer.withSettings(this._graph, this._settings) {
+ Dart2JSTransformer.withSettings(this._environment, this._settings) {
var invalidOptions = _settings.configuration.keys.toSet()
.difference(_validOptions);
if (invalidOptions.isEmpty) return;
@@ -61,14 +57,18 @@ class Dart2JSTransformer extends Transformer {
"${toSentence(invalidOptions.map((option) => '"$option"'))}.");
}
- Dart2JSTransformer(PackageGraph graph, BarbackMode mode)
- : this.withSettings(graph, new BarbackSettings({}, mode));
+ Dart2JSTransformer(BuildEnvironment environment, BarbackMode mode)
+ : this.withSettings(environment, new BarbackSettings({}, mode));
- /// Only ".dart" files within "web/" are processed.
+ /// Only ".dart" files within a buildable directory are processed.
Future<bool> isPrimary(Asset asset) {
- return new Future.value(
- asset.id.extension == ".dart" &&
- asset.id.path.startsWith("web/"));
+ if (asset.id.extension != ".dart") return new Future.value(false);
+
+ for (var dir in ["benchmark", "example", "test", "web"]) {
+ if (asset.id.path.startsWith("$dir/")) return new Future.value(true);
+ }
+
+ return new Future.value(false);
}
Future apply(Transform transform) {
@@ -91,7 +91,7 @@ class Dart2JSTransformer extends Transformer {
try {
var id = transform.primaryInput.id;
var name = id.path;
- if (id.package != _graph.entrypoint.root.name) {
+ if (id.package != _environment.rootPackage.name) {
name += " in ${id.package}";
}
@@ -102,16 +102,15 @@ class Dart2JSTransformer extends Transformer {
return null;
}
- var provider = new _BarbackCompilerProvider(_graph, transform);
+ var provider = new _BarbackCompilerProvider(_environment, transform);
// Create a "path" to the entrypoint script. The entrypoint may not
// actually be on disk, but this gives dart2js a root to resolve
// relative paths against.
var id = transform.primaryInput.id;
- entrypoints.add(id);
-
- var entrypoint = path.join(_graph.packages[id.package].dir, id.path);
+ var entrypoint = path.join(_environment.graph.packages[id.package].dir,
+ id.path);
// TODO(rnystrom): Should have more sophisticated error-handling here.
// Need to report compile errors to the user in an easily visible way.
@@ -125,7 +124,8 @@ class Dart2JSTransformer extends Transformer {
'minify', defaultsTo: _settings.mode == BarbackMode.RELEASE),
verbose: _configBool('verbose'),
environment: _configEnvironment,
- packageRoot: path.join(_graph.entrypoint.root.dir, "packages"),
+ packageRoot: path.join(_environment.rootPackage.dir,
+ "packages"),
analyzeAll: _configBool('analyzeAll'),
suppressWarnings: _configBool('suppressWarnings'),
suppressHints: _configBool('suppressHints'),
@@ -187,7 +187,7 @@ class Dart2JSTransformer extends Transformer {
/// difference is that it uses barback's logging code and, more importantly, it
/// handles missing source files more gracefully.
class _BarbackCompilerProvider implements dart.CompilerProvider {
- final PackageGraph _graph;
+ final BuildEnvironment _environment;
final Transform _transform;
/// The map of previously loaded files.
@@ -221,7 +221,7 @@ class _BarbackCompilerProvider implements dart.CompilerProvider {
compiler.Diagnostic.INFO.ordinal |
compiler.Diagnostic.VERBOSE_INFO.ordinal;
- _BarbackCompilerProvider(this._graph, this._transform);
+ _BarbackCompilerProvider(this._environment, this._transform);
/// A [CompilerInputProvider] for dart2js.
Future<String> provideInput(Uri resourceUri) {
@@ -344,14 +344,14 @@ class _BarbackCompilerProvider implements dart.CompilerProvider {
// See if it's a path to a "public" asset within the root package. All
// other files in the root package are not visible to transformers, so
// should be loaded directly from disk.
- var rootDir = _graph.entrypoint.root.dir;
+ var rootDir = _environment.rootPackage.dir;
var sourcePath = path.fromUri(url);
if (isBeneath(sourcePath, path.join(rootDir, "lib")) ||
isBeneath(sourcePath, path.join(rootDir, "asset")) ||
isBeneath(sourcePath, path.join(rootDir, "web"))) {
var relative = path.relative(sourcePath, from: rootDir);
- return new AssetId(_graph.entrypoint.root.name, relative);
+ return new AssetId(_environment.rootPackage.name, relative);
}
return null;

Powered by Google App Engine
This is Rietveld 408576698