From 42eac2d71d3d1d6350a9e373df2dc59c3a53d7c9 Mon Sep 17 00:00:00 2001 From: Michael Bayne Date: Wed, 10 Feb 2016 12:27:00 -0800 Subject: [PATCH] Support %ENV.NAME% substitutions. These can appear anywhere %APPDIR% and %VERSION% substitutions occur (pretty much everywhere in getdown.txt). In this case the NAME is the name of an environment variable, and the value of the environment variable is substituted into the text. --- .../threerings/getdown/data/Application.java | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/src/main/java/com/threerings/getdown/data/Application.java b/src/main/java/com/threerings/getdown/data/Application.java index 9ba5b35..b86e2ac 100644 --- a/src/main/java/com/threerings/getdown/data/Application.java +++ b/src/main/java/com/threerings/getdown/data/Application.java @@ -1090,6 +1090,21 @@ public class Application { arg = arg.replace("%APPDIR%", _appdir.getAbsolutePath()); arg = arg.replace("%VERSION%", String.valueOf(_version)); + + // if this argument contains %ENV.FOO% replace those with the associated values looked up + // from the environment + if (arg.contains(ENV_VAR_PREFIX)) { + StringBuffer sb = new StringBuffer(); + Matcher matcher = ENV_VAR_PATTERN.matcher(arg); + while (matcher.find()) { + String varName = matcher.group(1), varValue = System.getenv(varName); + if (varName == null) varName = "MISSING:" + varName; + matcher.appendReplacement(sb, varValue); + } + matcher.appendTail(sb); + arg = sb.toString(); + } + return arg; } @@ -1783,4 +1798,7 @@ public class Application protected FileChannel _lockChannel; protected static final String[] SA_PROTO = ArrayUtil.EMPTY_STRING; + + protected static final String ENV_VAR_PREFIX = "%ENV."; + protected static final Pattern ENV_VAR_PATTERN = Pattern.compile("%ENV\\.(.*?)%"); }