Index: pkg/polymer/lib/src/build/script_compactor.dart |
diff --git a/pkg/polymer/lib/src/build/script_compactor.dart b/pkg/polymer/lib/src/build/script_compactor.dart |
index bc09c68417d187ad2d04aa21d81627a3c4926bfa..ca07293af310786bef590776ead0d1554e778a1f 100644 |
--- a/pkg/polymer/lib/src/build/script_compactor.dart |
+++ b/pkg/polymer/lib/src/build/script_compactor.dart |
@@ -29,6 +29,7 @@ import 'package:polymer_expressions/visitor.dart' as pe; |
import 'import_inliner.dart' show ImportInliner; // just for docs. |
import 'common.dart'; |
+import 'wrapped_logger.dart'; |
/// Combines Dart script tags into a single script tag, and creates a new Dart |
/// file that calls the main function of each of the original script tags. |
@@ -142,9 +143,11 @@ class _ScriptCompactor extends PolymerTransformer { |
_SubExpressionVisitor expressionVisitor; |
- _ScriptCompactor(Transform transform, this.options, this.resolvers) |
+ _ScriptCompactor(Transform transform, options, this.resolvers) |
: transform = transform, |
- logger = transform.logger, |
+ options = options, |
+ logger = options.releaseMode ? transform.logger : |
+ new WrappedLogger(transform, convertErrorsToWarnings: true), |
docId = transform.primaryInput.id, |
bootstrapId = transform.primaryInput.id.addExtension('_bootstrap.dart'); |
@@ -152,7 +155,13 @@ class _ScriptCompactor extends PolymerTransformer { |
_loadDocument() |
.then(_loadEntryLibraries) |
.then(_processHtml) |
- .then(_emitNewEntrypoint); |
+ .then(_emitNewEntrypoint) |
+ .then((_) { |
+ // Write out the logs collected by our [WrappedLogger]. |
+ if (options.injectBuildLogsInOutput && logger is WrappedLogger) { |
+ return logger.writeOutput(); |
+ } |
+ }); |
/// Loads the primary input as an html document. |
Future _loadDocument() => |
@@ -427,6 +436,9 @@ class _ScriptCompactor extends PolymerTransformer { |
var url = assetUrlFor(id, bootstrapId, logger); |
if (url == null) continue; |
code.writeln("import '$url' as i$i;"); |
+ if (options.injectBuildLogsInOutput) { |
+ code.writeln("import 'package:polymer/src/build/log_injector.dart';"); |
+ } |
prefixes[id] = 'i$i'; |
i++; |
} |
@@ -438,6 +450,11 @@ class _ScriptCompactor extends PolymerTransformer { |
code.write(' useGeneratedCode('); |
generator.writeStaticConfiguration(code); |
code.writeln(');'); |
+ |
+ if (options.injectBuildLogsInOutput) { |
+ code.writeln(' new LogInjector().injectLogsFromUrl();'); |
+ } |
+ |
if (experimentalBootstrap) { |
code.write(' startPolymer(['); |
} else { |
@@ -459,6 +476,8 @@ class _ScriptCompactor extends PolymerTransformer { |
if (!experimentalBootstrap) { |
code.writeln(' i${entryLibraries.length - 1}.main();'); |
} |
+ |
+ // End of main(). |
code.writeln('}'); |
transform.addOutput(new Asset.fromString(bootstrapId, code.toString())); |
@@ -466,7 +485,15 @@ class _ScriptCompactor extends PolymerTransformer { |
// Emit the bootstrap .dart file |
var srcUrl = path.url.basename(bootstrapId.path); |
document.body.nodes.add(parseFragment( |
- '<script type="application/dart" src="$srcUrl"></script>')); |
+ '<script type="application/dart" src="$srcUrl"></script>')); |
+ |
+ // Add the styles for the logger widget. |
+ if (options.injectBuildLogsInOutput) { |
+ document.head.append(parseFragment( |
+ '<link rel="stylesheet" type="text/css"' |
+ 'href="packages/polymer/src/build/log_injector.css">')); |
+ } |
+ |
transform.addOutput(new Asset.fromString(docId, document.outerHtml)); |
} |