blob: d96e52f4e35eeee3d7d403ad55322a3513929987 [file] [log] [blame]
// Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
import 'dart:async';
import 'package:build/build.dart';
import 'package:meta/meta.dart';
import 'performance_tracker.dart';
/// The result of an individual build, this may be an incremental build or
/// a full build.
class BuildResult {
/// The status of this build.
final BuildStatus status;
/// The type of failure.
final FailureType failureType;
/// All outputs created/updated during this build.
final List<AssetId> outputs;
/// The [BuildPerformance] broken out by build action, may be `null`.
@experimental
final BuildPerformance performance;
BuildResult(this.status, List<AssetId> outputs,
{this.performance, FailureType failureType})
: outputs = List.unmodifiable(outputs),
failureType = failureType == null && status == BuildStatus.failure
? FailureType.general
: failureType;
@override
String toString() {
if (status == BuildStatus.success) {
return '''
Build Succeeded!
''';
} else {
return '''
Build Failed :(
''';
}
}
}
/// The status of a build.
enum BuildStatus {
success,
failure,
}
/// The type of failure
class FailureType {
static final general = FailureType._(1);
static final cantCreate = FailureType._(73);
static final buildConfigChanged = FailureType._(75);
static final buildScriptChanged = FailureType._(75);
final int exitCode;
FailureType._(this.exitCode);
}
abstract class BuildState {
Future<BuildResult> get currentBuild;
Stream<BuildResult> get buildResults;
}