blob: eb483ead0026e85634eac3fb7b62a90a3413ca35 [file] [log] [blame]
// 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 debug messages
*/
DEBUG,
/**
* 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,
CANCELLED,
/**
* 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.DEBUG,
EventKind.FAIL,
EventKind.TIMEOUT
);
public static final Set<EventKind> ERRORS_WARNINGS_AND_INFO = EnumSet.of(
EventKind.ERROR,
EventKind.WARNING,
EventKind.DEBUG,
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.DEBUG,
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.DEBUG,
EventKind.PASS,
EventKind.FAIL,
EventKind.TIMEOUT,
EventKind.INFO,
EventKind.STDOUT,
EventKind.STDERR
);
}