diff options
author | 2017-11-28 20:47:41 -0800 | |
---|---|---|
committer | 2017-11-28 20:49:17 -0800 | |
commit | e0d1d0ef7e1d53f232a457ac66496a5d8d9b82e3 (patch) | |
tree | d3637b0bf3f2020638665335841bf0ba752c7a1e /src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java | |
parent | 55a4b9ae3f4ac5c453e7d944c5113f7fe9baf24b (diff) |
Update PathPackageLocator to take a list of potential build file names,
instead of assuming BUILD.
- Default the list to the same value as PackageLookupFunction:
BUILD.bazel, BUILD.
- Move BuildFileNames to the packages package, so it is more generally
available.
Part of #4056.
Change-Id: Ie12512b492cd7d47a9e56ec3bc209f829feaf4b5
PiperOrigin-RevId: 177261295
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java b/src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java new file mode 100644 index 0000000000..a229429a9a --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/packages/BuildFileName.java @@ -0,0 +1,62 @@ +// Copyright 2017 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.packages; + +import com.google.devtools.build.lib.cmdline.PackageIdentifier; +import com.google.devtools.build.lib.vfs.PathFragment; + +/** The file (BUILD, WORKSPACE, etc.) that defines this package, referred to as the "build file". */ +public enum BuildFileName { + WORKSPACE("WORKSPACE") { + @Override + public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) { + return getFilenameFragment(); + } + }, + BUILD("BUILD") { + @Override + public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) { + return packageIdentifier.getPackageFragment().getRelative(getFilenameFragment()); + } + }, + BUILD_DOT_BAZEL("BUILD.bazel") { + @Override + public PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier) { + return packageIdentifier.getPackageFragment().getRelative(getFilenameFragment()); + } + }; + + private static final BuildFileName[] VALUES = BuildFileName.values(); + + private final PathFragment filenameFragment; + + private BuildFileName(String filename) { + this.filenameFragment = PathFragment.create(filename); + } + + public PathFragment getFilenameFragment() { + return filenameFragment; + } + + /** + * Returns a {@link PathFragment} to the build file that defines the package. + * + * @param packageIdentifier the identifier for this package + */ + public abstract PathFragment getBuildFileFragment(PackageIdentifier packageIdentifier); + + public static BuildFileName lookupByOrdinal(int ordinal) { + return VALUES[ordinal]; + } +} |