diff options
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java | 28 |
1 files changed, 27 insertions, 1 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java index 80d67573b2..25fc4ca865 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/Runfiles.java @@ -784,7 +784,18 @@ public final class Runfiles { * created. */ public Builder(String workspace, boolean legacyExternalRunfiles) { - this.suffix = new PathFragment(workspace); + this(new PathFragment(workspace), legacyExternalRunfiles); + } + + /** + * Creates a builder with the given suffix. + * @param suffix is the PathFragment wrapping the string specified in workspace() in the + * WORKSPACE file. + * @param legacyExternalRunfiles if the wsname/external/repo symlinks should also be + * created. + */ + private Builder(PathFragment suffix, boolean legacyExternalRunfiles) { + this.suffix = suffix; this.legacyExternalRunfiles = legacyExternalRunfiles; } @@ -1106,4 +1117,19 @@ public final class Runfiles { } } } + + /** + * Provides a Skylark-visible way to merge two Runfiles objects. + */ + @SkylarkCallable( + name = "merge", + doc = "Returns a new runfiles object that includes all the contents of this one and the " + + "argument." + ) + public Runfiles merge(Runfiles other) { + Runfiles.Builder builder = new Runfiles.Builder(suffix, false); + builder.merge(this); + builder.merge(other); + return builder.build(); + } } |