aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
diff options
context:
space:
mode:
authorGravatar Laurent Le Brun <laurentlb@google.com>2016-11-22 14:48:44 +0000
committerGravatar Dmitry Lomov <dslomov@google.com>2016-11-22 18:14:59 +0000
commit27d0b32ce5356d209d48c8912b22db5eeb5794e1 (patch)
tree292f6ec4a0a99b5565fd6620082374d7b9c7aba3 /src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
parenta3059e067c245fd56896f477e8a09978d5417823 (diff)
Minor refactoring in SkylarkUtils
Next step will be to move Environment.Phase to SkylarkUtils.BazelInfo -- MOS_MIGRATED_REVID=139902745
Diffstat (limited to 'src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java')
-rw-r--r--src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
index 875586f4f0..970543f60a 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java
@@ -17,22 +17,33 @@ package com.google.devtools.build.lib.syntax;
/** This class contains Bazel-specific functions to extend or interoperate with Skylark. */
public final class SkylarkUtils {
- public static final String TOOLS_REPOSITORY = "$tools_repository";
+ /** Bazel-specific information that we store in the Environment. */
+ private static class BazelInfo {
+ String toolsRepository;
+ }
+
+ private static final String BAZEL_INFO_KEY = "$bazel";
+
+ private static BazelInfo getInfo(Environment env) {
+ Object info = env.lookup(BAZEL_INFO_KEY);
+ if (info != null) {
+ return (BazelInfo) info;
+ }
- /** Unsafe version of Environment#update */
- private static void updateEnv(Environment env, String key, Object value) {
+ BazelInfo result = new BazelInfo();
try {
- env.update(key, value);
+ env.update(BAZEL_INFO_KEY, result);
+ return result;
} catch (EvalException e) {
throw new AssertionError(e);
}
}
public static void setToolsRepository(Environment env, String toolsRepository) {
- updateEnv(env, TOOLS_REPOSITORY, toolsRepository);
+ getInfo(env).toolsRepository = toolsRepository;
}
public static String getToolsRepository(Environment env) {
- return (String) env.lookup(TOOLS_REPOSITORY);
+ return getInfo(env).toolsRepository;
}
}