/*
 * Copyright 2012-present Facebook, Inc.
 *
 * 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.facebook.buck.util;


public class BuckConstant {

  /**
   * The relative path to the directory where Buck will generate its files.
   */
  public static final String BUCK_OUTPUT_DIRECTORY = "buck-out";

  // TODO(mbolin): The constants GEN_DIR, BIN_DIR, and ANNOTATION_DIR should be
  // package-private to the com.facebook.buck.rules directory. Currently, they are also used in the
  // com.facebook.buck.shell package, but these values should be injected into shell commands rather
  // than hardcoded therein. This ensures that shell commands stay build-rule-agnostic.

  public static final String GEN_DIR = BUCK_OUTPUT_DIRECTORY + "/gen";

  public static final String BIN_DIR = BUCK_OUTPUT_DIRECTORY + "/bin";

  public static final String ANNOTATION_DIR = BUCK_OUTPUT_DIRECTORY + "/annotation";

  /**
   * This variable is package-private because conceptually, only parsing logic should be concerned
   * with the files that define build rules. Note that if the value of this variable changes, the
   * {@code BUILD_RULES_FILE_NAME} constant in {@code buck.py} must be updated, as well.
   */
  public static final String BUILD_RULES_FILE_NAME = "BUCK";

  private BuckConstant() {}
}
