in disco-java-agent/disco-java-agent-core/src/main/java/software/amazon/disco/agent/config/AgentConfigParser.java [32:76]
public AgentConfig parseCommandLine(String args) {
if (args == null || args.isEmpty()) {
return new AgentConfig(null);
}
//TODO these regexes look overwrought.
//split by colon so that e.g. "arg=value1:arg2=value2" becomes ["arg1=value1", "arg2=value2"]
String[] individualArgs = args.split("(?<!\\\\):");
//for each arg=value pair, split by "="
final AgentConfig result = new AgentConfig(Arrays.asList(individualArgs));
for (String arg : individualArgs) {
String[] pair = arg.split("(?<!\\\\)=");
String value = pair.length > 1
? pair[1]
.replaceAll("\\\\:", ":")
.replaceAll("\\\\=", "=")
: "";
switch (pair[0].toLowerCase()) {
case "runtimeonly":
result.setRuntimeOnly(true);
break;
case "pluginpath":
result.setPluginPath(value);
break;
case "verbose":
result.setVerbose(true);
break;
case "extraverbose":
result.setExtraverbose(true);
break;
case "loggerfactory":
result.setLoggerFactoryClass(value);
break;
default:
//not an error, do nothing. individual interceptors might receive this arg instead
break;
}
}
return result;
}