| // Copyright 2014 The Flutter Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| import '../base/file_system.dart'; | |
| import 'build_system.dart'; | |
| /// An exception thrown when a rule declares an input that does not exist on | |
| /// disk. | |
| class MissingInputException implements Exception { | |
| const MissingInputException(this.missing, this.target); | |
| /// The file or directory we expected to find. | |
| final List<File> missing; | |
| /// The name of the target this file should have been output from. | |
| final String target; | |
| @override | |
| String toString() { | |
| final String files = missing.map((File file) => file.path).join(', '); | |
| return '$files were declared as an inputs, but did not exist. ' | |
| 'Check the definition of target:$target for errors'; | |
| } | |
| } | |
| /// An exception thrown if we detect a cycle in the dependencies of a target. | |
| class CycleException implements Exception { | |
| CycleException(this.targets); | |
| final Set<Target> targets; | |
| @override | |
| String toString() => | |
| 'Dependency cycle detected in build: ' | |
| '${targets.map((Target target) => target.name).join(' -> ')}'; | |
| } | |
| /// An exception thrown when a pattern is invalid. | |
| class InvalidPatternException implements Exception { | |
| InvalidPatternException(this.pattern); | |
| final String pattern; | |
| @override | |
| String toString() => 'The pattern "$pattern" is not valid'; | |
| } | |
| /// An exception thrown when a rule declares an output that was not produced | |
| /// by the invocation. | |
| class MissingOutputException implements Exception { | |
| const MissingOutputException(this.missing, this.target); | |
| /// The files we expected to find. | |
| final List<File> missing; | |
| /// The name of the target this file should have been output from. | |
| final String target; | |
| @override | |
| String toString() { | |
| final String files = missing.map((File file) => file.path).join(', '); | |
| return '$files were declared as outputs, but were not generated by ' | |
| 'the action. Check the definition of target:$target for errors'; | |
| } | |
| } | |
| /// An exception thrown when in output is placed outside of | |
| /// [Environment.buildDir]. | |
| class MisplacedOutputException implements Exception { | |
| MisplacedOutputException(this.path, this.target); | |
| final String path; | |
| final String target; | |
| @override | |
| String toString() { | |
| return 'Target $target produced an output at $path' | |
| ' which is outside of the current build or project directory'; | |
| } | |
| } | |
| /// An exception thrown if a build action is missing a required define. | |
| class MissingDefineException implements Exception { | |
| MissingDefineException(this.define, this.target); | |
| final String define; | |
| final String target; | |
| @override | |
| String toString() { | |
| return 'Target $target required define $define ' | |
| 'but it was not provided'; | |
| } | |
| } |