19808faf78deb962e7cced3d1abf517b0bb5ac9fcDamien Martin-Guillerez// Copyright 2014 The Bazel Authors. All rights reserved.
2e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez//
3e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// Licensed under the Apache License, Version 2.0 (the "License");
4e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// you may not use this file except in compliance with the License.
5e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// You may obtain a copy of the License at
6e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez//
7e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez//    http://www.apache.org/licenses/LICENSE-2.0
8e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez//
9e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// Unless required by applicable law or agreed to in writing, software
10e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// distributed under the License is distributed on an "AS IS" BASIS,
11e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// See the License for the specific language governing permissions and
13e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez// limitations under the License.
14e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerezpackage com.google.devtools.common.options;
15e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
16e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez/**
17e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * The priority of option values, in order of increasing priority.
18e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez *
19e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * <p>In general, new values for options can only override values with a lower or
20e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * equal priority. Option values provided in annotations in an options class are
21e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * implicitly at the priority {@code DEFAULT}.
22e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez *
23e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * <p>The ordering of the priorities is the source-code order. This is consistent
24e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * with the automatically generated {@code compareTo} method as specified by the
25e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * Java Language Specification. DO NOT change the source-code order of these
26e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez * values, or you will break code that relies on the ordering.
27e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez */
28e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerezpublic enum OptionPriority {
29e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
30e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  /**
31e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * The priority of values specified in the {@link Option} annotation. This
32e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * should never be specified in calls to {@link OptionsParser#parse}.
33e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   */
34e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  DEFAULT,
35e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
36e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  /**
37e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * Overrides default options at runtime, while still allowing the values to be
38e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * overridden manually.
39e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   */
40e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  COMPUTED_DEFAULT,
41e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
42e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  /**
43e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * For options coming from a configuration file or rc file.
44e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   */
45e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  RC_FILE,
46e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
47e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  /**
48e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * For options coming from the command line.
49e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   */
50e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  COMMAND_LINE,
51e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez
52e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  /**
53639ceefbac67dceb84cc1df1199f848ed167fea0Alex Humesky   * For options coming from invocation policy.
54639ceefbac67dceb84cc1df1199f848ed167fea0Alex Humesky   */
55639ceefbac67dceb84cc1df1199f848ed167fea0Alex Humesky  INVOCATION_POLICY,
56639ceefbac67dceb84cc1df1199f848ed167fea0Alex Humesky
57639ceefbac67dceb84cc1df1199f848ed167fea0Alex Humesky  /**
58e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * This priority can be used to unconditionally override any user-provided options.
59e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   * This should be used rarely and with caution!
60e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez   */
61e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez  SOFTWARE_REQUIREMENT;
62e3f722934d1544379bd385e3053d515d3763095cDamien Martin-Guillerez}
63