in odps-console-xflow/src/main/java/com/aliyun/openservices/odps/console/xflow/PAICommand.java [103:155]
public static CommandLine getCommandLine(String commandText) throws ODPSConsoleException {
AntlrObject antlr = new AntlrObject(commandText);
String[] parts = antlr.getTokenStringArray();
List<String> args = new ArrayList<String>();
for (int i = 0; i < parts.length; i++) {
String curr = parts[i];
// In current antlr logic
// -a=b will be parsed to -a=b
// -a="b" will be parsed to -a= and "b"
String[] keyValue = curr.split("=", 2);
if (keyValue.length == 2) {
String value = keyValue[1];
if (keyValue[1].isEmpty() && i+1 < parts.length) {
value = parts[++i];
}
if (value.length() >= 2 &&
(value.startsWith("\"") && value.endsWith("\"") ||
value.startsWith("'") && value.endsWith("'"))) {
value = value.substring(1, value.length() - 1);
}
args.add(keyValue[0] + "=" + StringEscapeUtils.unescapeJava(value));
} else {
args.add(parts[i]);
}
}
if (args.size() < 2) {
printUsage(System.err);
throw new ODPSConsoleException("Invalid parameters - Generic options must be specified.");
}
Options opts = initOptions();
CommandLineParser clp = new GnuParser();
CommandLine cl;
try {
cl = clp.parse(opts, args.toArray(new String[]{}), false);
} catch (Exception e) {
throw new ODPSConsoleException("Unknown exception from client - " + e.getMessage(), e);
}
if (!cl.hasOption("name")) {
throw new ODPSConsoleException(
"Invalid parameters - model name must be specified, using '-t' option.");
}
if (cl.getArgList().size() > 1) {
// only need arg 'PAI'
throw new ODPSConsoleException("Invalid parameters - should use -D options.");
}
return cl;
}