package io.emax.cosigner.common; import java.util.regex.Matcher; import java.util.regex.Pattern; public class EnvironmentVariableParser { /** * Parses a string, resolves and expands any environment variables. * * @param input String to resolve * @return String with environment variables expanded to their actual values. */ public static String resolveEnvVars(String input) { if (input == null) { return null; } Pattern pattern = Pattern.compile("\\$\\{(\\w+)\\}|\\$(\\w+)"); Matcher matcher = pattern.matcher(input); StringBuffer buffer = new StringBuffer(); while (matcher.find()) { String envVarName = null == matcher.group(1) ? matcher.group(2) : matcher.group(1); String envVarValue = System.getenv(envVarName); matcher.appendReplacement(buffer, null == envVarValue ? "" : envVarValue); } matcher.appendTail(buffer); return buffer.toString(); } }