aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/cmdline
diff options
context:
space:
mode:
authorGravatar twerth <twerth@google.com>2018-06-22 08:12:56 -0700
committerGravatar Copybara-Service <copybara-piper@google.com>2018-06-22 08:14:03 -0700
commit732dc512801c32207c252a76ca8d9e5544560339 (patch)
tree5c5301d766b78194d2d7e89bd103b565b53d236d /src/main/java/com/google/devtools/build/lib/cmdline
parentdc97fd15dc53489211ca65fbbf85131853a559fc (diff)
Automated rollback of commit 5a9befc5602e71f7512074c303afbdcff5617cca.
RELNOTES: None *** Reason for rollback *** PiperOrigin-RevId: 201686843
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/cmdline')
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/Label.java33
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java5
-rw-r--r--src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java20
3 files changed, 15 insertions, 43 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
index 91106b272c..9899f2c7b3 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/Label.java
@@ -155,22 +155,17 @@ public final class Label
repo = absName;
absName = "//:" + absName.substring(1);
}
- String error = RepositoryName.validate(repo);
- if (error != null) {
- throw new LabelSyntaxException(
- "invalid repository name '" + StringUtilities.sanitizeControlChars(repo) + "': " + error);
- }
try {
LabelValidator.PackageAndTarget labelParts = LabelValidator.parseAbsoluteLabel(absName);
- PackageIdentifier pkgId =
- validatePackageName(
- labelParts.getPackageName(), labelParts.getTargetName(), repo, repositoryMapping);
- PathFragment packageFragment = pkgId.getPackageFragment();
+ PackageIdentifier pkgIdWithoutRepo =
+ validatePackageName(labelParts.getPackageName(), labelParts.getTargetName());
+ PathFragment packageFragment = pkgIdWithoutRepo.getPackageFragment();
if (repo.isEmpty() && ABSOLUTE_PACKAGE_NAMES.contains(packageFragment)) {
- pkgId =
- PackageIdentifier.create(getGlobalRepoName("@", repositoryMapping), packageFragment);
+ repo = "@";
}
- return create(pkgId, labelParts.getTargetName());
+ RepositoryName globalRepoName = getGlobalRepoName(repo, repositoryMapping);
+ return create(
+ PackageIdentifier.create(globalRepoName, packageFragment), labelParts.getTargetName());
} catch (BadLabelException e) {
throw new LabelSyntaxException(e.getMessage());
}
@@ -294,25 +289,15 @@ public final class Label
return name;
}
- private static PackageIdentifier validatePackageName(String packageIdentifier, String name)
- throws LabelSyntaxException {
- return validatePackageName(
- packageIdentifier, name, /* repo= */ null, /* repositoryMapping= */ null);
- }
-
/**
* Validates the given package name and returns a canonical {@link PackageIdentifier} instance if
* it is valid. Otherwise it throws a SyntaxException.
*/
- private static PackageIdentifier validatePackageName(
- String packageIdentifier,
- String name,
- String repo,
- ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
+ private static PackageIdentifier validatePackageName(String packageIdentifier, String name)
throws LabelSyntaxException {
String error = null;
try {
- return PackageIdentifier.parse(packageIdentifier, repo, repositoryMapping);
+ return PackageIdentifier.parse(packageIdentifier);
} catch (LabelSyntaxException e) {
error = e.getMessage();
error = "invalid package name '" + packageIdentifier + "': " + error;
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
index e63b09684a..633946c60f 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
@@ -45,6 +45,7 @@ public final class LabelValidator {
// Package names allow all 7-bit ASCII characters except
// 0-31 (control characters)
// 58 ':' (colon) - target name separator
+ // 64 '@' (at-sign) - workspace name prefix
// 92 '\' (backslash) - directory separator (on Windows); may be allowed in the future
// 127 (delete)
/** Matches characters allowed in package name. */
@@ -52,7 +53,7 @@ public final class LabelValidator {
CharMatcher.inRange('0', '9')
.or(CharMatcher.inRange('a', 'z'))
.or(CharMatcher.inRange('A', 'Z'))
- .or(CharMatcher.anyOf(" !\"#$%&'()*+,-./;<=>?@[]^_`{|}~"))
+ .or(CharMatcher.anyOf(" !\"#$%&'()*+,-./;<=>?[]^_`{|}~"))
.precomputed();
/**
@@ -70,7 +71,7 @@ public final class LabelValidator {
@VisibleForTesting
static final String PACKAGE_NAME_ERROR =
"package names may contain A-Z, a-z, 0-9, or any of ' !\"#$%&'()*+,-./;<=>?[]^_`{|}~'"
- + " (most 127-bit ascii characters except 0-31, 127, ':', or '\\')";
+ + " (most 127-bit ascii characters except 0-31, 127, ':', '@', or '\\')";
@VisibleForTesting
static final String PACKAGE_NAME_DOT_ERROR =
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
index 732e6a0642..8d7ad1910a 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/PackageIdentifier.java
@@ -16,7 +16,6 @@ package com.google.devtools.build.lib.cmdline;
import com.google.common.base.Preconditions;
import com.google.common.collect.ComparisonChain;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Interner;
import com.google.devtools.build.lib.concurrent.BlazeInterners;
import com.google.devtools.build.lib.skyframe.serialization.autocodec.AutoCodec;
@@ -120,17 +119,10 @@ public final class PackageIdentifier
}
public static PackageIdentifier parse(String input) throws LabelSyntaxException {
- return parse(input, /* repo= */ null, /* repositoryMapping= */ null);
- }
-
- public static PackageIdentifier parse(
- String input, String repo, ImmutableMap<RepositoryName, RepositoryName> repositoryMapping)
- throws LabelSyntaxException {
+ String repo;
String packageName;
int packageStartPos = input.indexOf("//");
- if (repo != null) {
- packageName = input;
- } else if (input.startsWith("@") && packageStartPos > 0) {
+ if (input.startsWith("@") && packageStartPos > 0) {
repo = input.substring(0, packageStartPos);
packageName = input.substring(packageStartPos + 2);
} else if (input.startsWith("@")) {
@@ -153,13 +145,7 @@ public final class PackageIdentifier
throw new LabelSyntaxException(error);
}
- if (repositoryMapping != null) {
- RepositoryName repositoryName = RepositoryName.create(repo);
- repositoryName = repositoryMapping.getOrDefault(repositoryName, repositoryName);
- return create(repositoryName, PathFragment.create(packageName));
- } else {
- return create(repo, PathFragment.create(packageName));
- }
+ return create(repo, PathFragment.create(packageName));
}
public RepositoryName getRepository() {