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

Unified Diff: pkg/barback/lib/src/package_graph.dart

Issue 26572010: Improve barback/pub logging. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Add missing file. Created 7 years, 2 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: pkg/barback/lib/src/package_graph.dart
diff --git a/pkg/barback/lib/src/package_graph.dart b/pkg/barback/lib/src/package_graph.dart
index 2cd5b46b370e2eac2d4f8082c8859efcdf0d105e..ec358e64deb15d46c765ca633abf0b7b5c96c6db 100644
--- a/pkg/barback/lib/src/package_graph.dart
+++ b/pkg/barback/lib/src/package_graph.dart
@@ -10,6 +10,7 @@ import 'asset_cascade.dart';
import 'asset_id.dart';
import 'asset_node.dart';
import 'asset_set.dart';
+import 'barback_logger.dart';
import 'build_result.dart';
import 'errors.dart';
import 'package_provider.dart';
@@ -24,6 +25,10 @@ class PackageGraph {
/// The provider that exposes asset and package information.
final PackageProvider provider;
+ /// The logger used to report transformer log entries. If this is null, then
nweiz 2013/10/16 19:41:27 paragraph break
Bob Nystrom 2013/10/28 23:45:56 Done.
+ /// [_defaultLogger] will be used instead.
nweiz 2013/10/16 19:41:27 _defaultLogger isn't defined anywhere
Bob Nystrom 2013/10/28 23:45:56 Done.
+ final BarbackLogger _logger;
+
/// The [AssetCascade] for each package.
final _cascades = <String, AssetCascade>{};
@@ -62,7 +67,8 @@ class PackageGraph {
/// Creates a new [PackageGraph] that will transform assets in all packages
/// made available by [provider].
- PackageGraph(this.provider) {
+ PackageGraph(this.provider, {BarbackLogger logger})
+ : _logger = logger != null ? logger : new BarbackLogger() {
for (var package in provider.packages) {
var cascade = new AssetCascade(this, package);
// The initial result for each cascade is "success" since the cascade
@@ -73,16 +79,23 @@ class PackageGraph {
_cascadeResults[package] = null;
});
+ cascade.onLog.listen(_logger.logEntry);
+
cascade.results.listen((result) {
_cascadeResults[cascade.package] = result;
// If any cascade hasn't yet finished, the overall build isn't finished
// either.
if (_cascadeResults.values.any((result) => result == null)) return;
+ var errors = unionAll(
+ _cascadeResults.values.map((result) => result.errors));
+
+ var numLogErrors = _cascadeResults.values.fold(0,
+ (numErrors, result) => result.numErrors - result.errors.length);
+
// Include all build errors for all cascades. If no cascades have
// errors, the result will automatically be considered a success.
- _resultsController.add(new BuildResult(unionAll(
- _cascadeResults.values.map((result) => result.errors))));
+ _resultsController.add(new BuildResult(errors, numLogErrors));
}, onError: (error) {
_lastUnexpectedError = error;
_resultsController.addError(error);

Powered by Google App Engine
This is Rietveld 408576698