mirror of
https://github.com/fish-shell/fish-shell.git
synced 2026-05-01 18:31:14 -03:00
argparse: Jump to the next option after an unknown one
Previously, when we got an unknown option with --ignore-unknown, we would increment woptind but still try to read the same contents. This means in e.g. ``` argparse -i h -- -ooo -h ``` The `-h` would also be skipped as an option, because after the first `-o` getopt reads the other two `-o` and skips that many options. This could be handled more extensively in wgetopt, but the simpler fix is to just skip to the next argv entry once we have an unknown option - there's nothing more we can do with it anyway! Additionally, document this and clearly explain that we currently don't transform the option. Fixes #8637
This commit is contained in:
@@ -184,3 +184,18 @@ Some OPTION_SPEC examples:
|
||||
After parsing the arguments the ``argv`` variable is set with local scope to any values not already consumed during flag processing. If there are no unbound values the variable is set but ``count $argv`` will be zero.
|
||||
|
||||
If an error occurs during argparse processing it will exit with a non-zero status and print error messages to stderr.
|
||||
|
||||
Limitations
|
||||
-----------
|
||||
|
||||
One limitation with **--ignore-unknown** is that, if an unknown option is given in a group with known options, the entire group will be kept in $argv. ``argparse`` will not do any permutations here.
|
||||
|
||||
For instance::
|
||||
|
||||
argparse --ignore-unknown h -- -ho
|
||||
echo $_flag_h # is -h, because -h was given
|
||||
echo $argv # is still -ho
|
||||
|
||||
This limitation may be lifted in future.
|
||||
|
||||
Additionally, it can only parse known options up to the first unknown option in the group - the unknown option could take options, so it isn't clear what any character after an unknown option means.
|
||||
|
||||
Reference in New Issue
Block a user