From d08b27fa9701fecfdb69e1b0d1ac2459efc2129b Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 25 Feb 2015 16:45:20 +0100 Subject: Update from Google. -- MOE_MIGRATED_REVID=85702957 --- .../lib/pkgcache/TargetPatternResolverUtil.java | 69 ++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java (limited to 'src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java') diff --git a/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java new file mode 100644 index 0000000000..6bbf55c7fe --- /dev/null +++ b/src/main/java/com/google/devtools/build/lib/pkgcache/TargetPatternResolverUtil.java @@ -0,0 +1,69 @@ +// Copyright 2014 Google Inc. 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.pkgcache; + +import com.google.devtools.build.lib.cmdline.ResolvedTargets; +import com.google.devtools.build.lib.cmdline.TargetParsingException; +import com.google.devtools.build.lib.packages.Package; +import com.google.devtools.build.lib.packages.Target; +import com.google.devtools.build.lib.syntax.Label; +import com.google.devtools.build.lib.util.StringUtilities; + +/** + * Common utility methods for target pattern resolution. + */ +public final class TargetPatternResolverUtil { + private TargetPatternResolverUtil() { + // Utility class. + } + + // Parse 'label' as a Label, mapping Label.SyntaxException into + // TargetParsingException. + public static Label label(String label) throws TargetParsingException { + try { + return Label.parseAbsolute(label); + } catch (Label.SyntaxException e) { + throw invalidTarget(label, e.getMessage()); + } + } + + /** + * Returns a new exception indicating that a command-line target is invalid. + */ + private static TargetParsingException invalidTarget(String packageName, + String additionalMessage) { + return new TargetParsingException("invalid target format: '" + + StringUtilities.sanitizeControlChars(packageName) + "'; " + + StringUtilities.sanitizeControlChars(additionalMessage)); + } + + public static String getParsingErrorMessage(String message, String originalPattern) { + if (originalPattern == null) { + return message; + } else { + return String.format("while parsing '%s': %s", originalPattern, message); + } + } + + public static ResolvedTargets resolvePackageTargets(Package pkg, + FilteringPolicy policy) { + ResolvedTargets.Builder builder = ResolvedTargets.builder(); + for (Target target : pkg.getTargets()) { + if (policy.shouldRetain(target, false)) { + builder.add(target); + } + } + return builder.build(); + } +} -- cgit v1.2.3