// Copyright 2014 The Bazel Authors. All rights reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package com.google.devtools.build.lib.events; import java.util.EnumSet; import java.util.Set; /** * Indicates the kind of an {@link Event}. */ public enum EventKind { /** * For errors that will prevent a successful, correct build. In general, the * build tool will not attempt to start or continue a build if an error is * encountered (though the behaviour specified by --keep-going flag is a * counterexample). * * Errors of a more severe nature in the input, such as those which might * cause later passes of the analysis to fail catastrophically, should be * handled by throwing an exception. */ ERROR, /** * For warnings of minor problems that do not affect the integrity of a * build. */ WARNING, /** * For atemporal information that is true throughout the entire duration * of a build. (e.g. the number of targets found) */ INFO, /** * For temporal information that changes during the duration of a build. * (e.g. what action is executing now) */ PROGRESS, /** * For progress messages (temporal information) relating to the start * and end of particular tasks. * (e.g. "Loading package foo", "Compiling bar", etc.) */ START, FINISH, /** * For command lines of subcommands executed by the build tool (like make-dbg * "-v"). */ SUBCOMMAND, /** * Output to stdout/stderr from subprocesses. */ STDOUT, STDERR, /** * Test result messages (similar to the INFO and ERROR, but test-specific). */ PASS, FAIL, TIMEOUT, /** * For the reasoning of the dependency checker (like GNU Make "-d"). */ DEPCHECKER; // Convenient predefined EnumSets. Clients should not mutate them! public static final Set<EventKind> ALL_EVENTS = EnumSet.allOf(EventKind.class); public static final Set<EventKind> OUTPUT = EnumSet.of( EventKind.STDOUT, EventKind.STDERR ); public static final Set<EventKind> ERRORS = EnumSet.of( EventKind.ERROR, EventKind.FAIL, EventKind.TIMEOUT ); public static final Set<EventKind> ERRORS_AND_WARNINGS = EnumSet.of( EventKind.ERROR, EventKind.WARNING, EventKind.FAIL, EventKind.TIMEOUT ); public static final Set<EventKind> ERRORS_WARNINGS_AND_INFO = EnumSet.of( EventKind.ERROR, EventKind.WARNING, EventKind.PASS, EventKind.FAIL, EventKind.TIMEOUT, EventKind.INFO ); public static final Set<EventKind> ERRORS_AND_OUTPUT = EnumSet.of( EventKind.ERROR, EventKind.FAIL, EventKind.TIMEOUT, EventKind.STDOUT, EventKind.STDERR ); public static final Set<EventKind> ERRORS_AND_WARNINGS_AND_OUTPUT = EnumSet.of( EventKind.ERROR, EventKind.WARNING, EventKind.FAIL, EventKind.TIMEOUT, EventKind.STDOUT, EventKind.STDERR ); public static final Set<EventKind> ERRORS_WARNINGS_AND_INFO_AND_OUTPUT = EnumSet.of( EventKind.ERROR, EventKind.WARNING, EventKind.PASS, EventKind.FAIL, EventKind.TIMEOUT, EventKind.INFO, EventKind.STDOUT, EventKind.STDERR ); }