From 27d0b32ce5356d209d48c8912b22db5eeb5794e1 Mon Sep 17 00:00:00 2001 From: Laurent Le Brun Date: Tue, 22 Nov 2016 14:48:44 +0000 Subject: Minor refactoring in SkylarkUtils Next step will be to move Environment.Phase to SkylarkUtils.BazelInfo -- MOS_MIGRATED_REVID=139902745 --- .../devtools/build/lib/syntax/SkylarkUtils.java | 23 ++++++++++++++++------ 1 file changed, 17 insertions(+), 6 deletions(-) (limited to 'src/main/java/com/google/devtools/build/lib/syntax/SkylarkUtils.java') 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; } } -- cgit v1.2.3