diff options
author | 2015-02-11 15:54:50 +0000 | |
---|---|---|
committer | 2015-02-11 15:54:50 +0000 | |
commit | bc4b4b1d6cf04f6f1b8c7129338c975d39363cc2 (patch) | |
tree | 0740db737394c4fa9345dc631fd753461ee6ed76 /src/main/java/com/google/devtools/build/lib/analysis | |
parent | 98f9af508cc3c4e1d66e459e12dd0bc78a536b12 (diff) |
Parse built-in WORKSPACE files
This doesn't actually add any default workspace files, yet, but adds machinery
for them. Also did some cleanup/renaming.
--
MOS_MIGRATED_REVID=86085127
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/analysis')
-rw-r--r-- | src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java index e84f9aa187..26e0617454 100644 --- a/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java +++ b/src/main/java/com/google/devtools/build/lib/analysis/ConfiguredRuleClassProvider.java @@ -40,6 +40,7 @@ import com.google.devtools.build.lib.syntax.SkylarkEnvironment; import com.google.devtools.build.lib.syntax.SkylarkModule; import com.google.devtools.build.lib.syntax.SkylarkType; import com.google.devtools.build.lib.syntax.ValidationEnvironment; +import com.google.devtools.build.lib.vfs.PathFragment; import com.google.devtools.common.options.OptionsClassProvider; import java.lang.reflect.Constructor; @@ -76,6 +77,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { * Builder for {@link ConfiguredRuleClassProvider}. */ public static class Builder implements RuleDefinitionEnvironment { + private final List<PathFragment> defaultWorkspaceFiles = new ArrayList<>(); private final List<ConfigurationFragmentFactory> configurationFragments = new ArrayList<>(); private final List<BuildInfoFactory> buildInfoFactories = new ArrayList<>(); private final List<Class<? extends FragmentOptions>> configurationOptions = new ArrayList<>(); @@ -90,6 +92,10 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { private PrerequisiteValidator prerequisiteValidator; private ImmutableMap<String, SkylarkType> skylarkAccessibleJavaClasses = ImmutableMap.of(); + public void addWorkspaceFile(PathFragment defaultWorkspace) { + defaultWorkspaceFiles.add(defaultWorkspace); + } + public Builder setPrerequisiteValidator(PrerequisiteValidator prerequisiteValidator) { this.prerequisiteValidator = prerequisiteValidator; return this; @@ -194,6 +200,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { return new ConfiguredRuleClassProvider( ImmutableMap.copyOf(ruleClassMap), ImmutableMap.copyOf(ruleDefinitionMap), + ImmutableList.copyOf(defaultWorkspaceFiles), ImmutableList.copyOf(buildInfoFactories), ImmutableList.copyOf(configurationOptions), ImmutableList.copyOf(configurationFragments), @@ -225,6 +232,12 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { }); /** + * A list of relative paths to the WORKSPACE files needed to provide external dependencies for + * the rule classes. + */ + private ImmutableList<PathFragment> defaultWorkspaceFiles; + + /** * Maps rule class name to the metaclass instance for that rule. */ private final ImmutableMap<String, RuleClass> ruleClassMap; @@ -260,6 +273,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { public ConfiguredRuleClassProvider( ImmutableMap<String, RuleClass> ruleClassMap, ImmutableMap<String, Class<? extends RuleDefinition>> ruleDefinitionMap, + ImmutableList<PathFragment> defaultWorkspaceFiles, ImmutableList<BuildInfoFactory> buildInfoFactories, ImmutableList<Class<? extends FragmentOptions>> configurationOptions, ImmutableList<ConfigurationFragmentFactory> configurationFragments, @@ -269,6 +283,7 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { this.ruleClassMap = ruleClassMap; this.ruleDefinitionMap = ruleDefinitionMap; + this.defaultWorkspaceFiles = defaultWorkspaceFiles; this.buildInfoFactories = buildInfoFactories; this.configurationOptions = configurationOptions; this.configurationFragments = configurationFragments; @@ -373,4 +388,9 @@ public class ConfiguredRuleClassProvider implements RuleClassProvider { public Object getNativeModule() { return nativeModule; } + + @Override + public List<PathFragment> getWorkspaceFiles() { + return defaultWorkspaceFiles; + } } |