public static CommandLine getCommandLine()

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;
  }