Stop processing flag multiple when a non-option flag is found
Currently, if we have a flag that accepts multiple values followed by a boolean flag and then positional arguments, the multiple flag will erroneously receive the arguments that come after the boolean flag. Example
myProg --extensions .js .ts --strict ./myDir1 ./myDir2
# extensions is set to [ '.js', '.ts', './myDir1', './myDir2' ]
This PR changes that behavior so boolean flags end the parsing just like option flags do.
myProg --extensions .js .ts --strict ./myDir1 ./myDir2
# extensions is set to [ '.js', '.ts' ]
Bug is due to this.currentFlag not being set for non-option (bool) flags in parse.ts lines 109-147
Thanks for the contribution! Before we can merge this, we need @firefish5000 to sign the Salesforce.com Contributor License Agreement.
Unrelated, but while reading the test I had to question why we have --foo '=bar' resolve to {foo: 'bar'}. It seems like an unintuitive edge case for the end users who are trying to pass strings that may or may not start with an = sign to flags.
Parsing the equal out of --foo=bar is fine, standard even. But that space, imo, clearly signifies that whatever string comes after it is the argument, equal sign included.
Also unrelated. Commits 120e121 and 76fa11c are just expansion of test cases. Not really part of this issue. These were things I needed to assure myself occurred in general and didn't see in the tests