Uploaded image for project: 'Commons CLI'
  1. Commons CLI
  2. CLI-221

cli's with last option as list type values and have argument are not parsed correctly

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Open
    • Major
    • Resolution: Unresolved
    • 1.2
    • None
    • Parser
    • None

    Description

      I have set the value separator for an option to be comma (',').

      Consider the following cli:
      cli definition : cmd1 -o1 <comma separated values> a1
      command name: 'cmd1'
      options: 'o1' accpets list of values separated by ','
      arguments: 'a1' single valued argument

      cmd1 -o1 o1v1,o1v2,o1v3 a1v1

      GnuParser parses this the cli with o1 having values

      {o1v1, o1v2, o1v3, a1v1}

      instead of

      {o1v1,o1v2,o1v3}

      Bug seems to be in org.apache.commons.cli.Parser's class processArgs method.

          public void processArgs(Option opt, ListIterator iter) throws ParseException
          {
              // loop until an option is found
              while (iter.hasNext())
              {
                  String str = (String) iter.next();
      
                  // found an Option, not an argument
                  if (getOptions().hasOption(str) && str.startsWith("-"))
                  {
                      iter.previous();
                      break;
                  }
      
                  // found a value
                  try
                  {
                      opt.addValueForProcessing(Util.stripLeadingAndTrailingQuotes(str));
                  }
                  catch (RuntimeException exp)
                  {
                      iter.previous();
                      break;
                  }
              }
      
              if (opt.getValues() == null && !opt.hasOptionalArg())
              {
                  throw new MissingArgumentException(opt);
              }
          }
      

      In my opinion, if a value separator is defined for option, and is other than space (' '), loop should break immediately after one iteration.

      Correct me, if I am wrong in my understanding.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              gaganj Gagan Jain
              Votes:
              0 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated: