/** ** Apply replacements/conditionals and write output */ public static void writeOutputSource(String inputSource, File outputFile) throws IOException { String outputSource = inputSource; if (StringTools.isBlank(outputSource)) { // throw new IOException("Output Source is empty"); return; } /* custom map */ Map<String, String> customMap = new HashMap<String, String>() { @Override public String get(Object key) { String ks = StringTools.trim(key); if (ks.toLowerCase().endsWith(".md5")) { String K = ks.substring(0, ks.length() - ".md5".length()); String V = RTConfig._getString(K, null, true /*dftOK*/); if (V != null) { return StringTools.trim(FileTools.getHash_MD5(V.getBytes())).toUpperCase(); } else { return null; } } else { return null; } } }; /* replace standard runtime vars in text (ie. %{var=value}) */ // -- replace %{var=value} outputSource = RTConfig.insertKeyValues(outputSource, STR_DELIM, END_DELIM, DFT_DELIM, customMap); // -- replace /#{var=value}#/ outputSource = RTConfig.insertKeyValues(outputSource, STR_CDELIM, END_CDELIM, DFT_CDELIM, customMap); /* conditional code? */ outputSource = CompiletimeVars.getConditionalSource(outputSource); /* write output */ if (outputFile != null) { Print.sysPrintln("Output to file: " + outputFile); boolean didWrite = FileTools.writeFile(outputSource.getBytes(), outputFile); if (!didWrite) { throw new IOException("Unable to write output file."); } } else { // -- write to stdout Print.sysPrintln(outputSource); } }