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

Unified Diff: pkg/barback/lib/src/asset_cascade.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/asset_cascade.dart
diff --git a/pkg/barback/lib/src/asset_cascade.dart b/pkg/barback/lib/src/asset_cascade.dart
index f123cf38376ca0ea6bb2bf46a7b59ebc0511719c..9eec80041c467d9fec3eb872676b90fb399c150f 100644
--- a/pkg/barback/lib/src/asset_cascade.dart
+++ b/pkg/barback/lib/src/asset_cascade.dart
@@ -11,6 +11,7 @@ import 'asset.dart';
import 'asset_id.dart';
import 'asset_node.dart';
import 'asset_set.dart';
+import 'barback_logger.dart';
import 'build_result.dart';
import 'cancelable_future.dart';
import 'errors.dart';
@@ -84,11 +85,20 @@ class AssetCascade {
/// A controller whose stream feeds into [_onDirtyPool].
final _onDirtyController = new StreamController.broadcast(sync: true);
+ /// A stream that emits an event whenever any transforms in this cascade log
nweiz 2013/10/16 19:41:27 "log" -> "logs"
Bob Nystrom 2013/10/28 23:45:56 Done.
+ /// an entry.
+ Stream<LogEntry> get onLog => _onLogPool.stream;
+ final _onLogPool = new StreamPool<LogEntry>.broadcast();
+
/// The errors that have occurred since the current build started.
///
/// This will be empty if no build is occurring.
Queue<BarbackException> _accumulatedErrors;
+ /// The number of errors that have been logged since the current build
+ /// started.
+ int _numLogErrors;
+
/// A future that completes when the currently running build process finishes.
///
/// If no build it in progress, is `null`.
@@ -108,6 +118,11 @@ class AssetCascade {
AssetCascade(this.graph, this.package) {
_onDirtyPool.add(_onDirtyController.stream);
_addPhase(new Phase(this, []));
+
+ // Keep track of logged errors so we can know that the build failed.
+ onLog.listen((entry) {
+ if (entry.level == LogLevel.ERROR) _numLogErrors++;
+ });
}
/// Gets the asset identified by [id].
@@ -222,6 +237,7 @@ class AssetCascade {
/// Add [phase] to the end of [_phases] and watch its [onDirty] stream.
void _addPhase(Phase phase) {
_onDirtyPool.add(phase.onDirty);
+ _onLogPool.add(phase.onLog);
phase.onDirty.listen((_) {
_newChanges = true;
_waitForProcess();
@@ -240,10 +256,12 @@ class AssetCascade {
if (_processDone != null) return _processDone;
_accumulatedErrors = new Queue();
+ _numLogErrors = 0;
return _processDone = _process().then((_) {
// Report the build completion.
// TODO(rnystrom): Put some useful data in here.
- _resultsController.add(new BuildResult(_accumulatedErrors));
+ _resultsController.add(
+ new BuildResult(_accumulatedErrors, _numLogErrors));
}).catchError((error) {
// If we get here, it's an unexpected error. Runtime errors like missing
// assets should be handled earlier. Errors from transformers or other

Powered by Google App Engine
This is Rietveld 408576698