Mutually exclusive groupsΒΆ

A group of arguments and options can be marked as mutually exclusive using :mutex(argument_or_option, ...) method of the Parser class.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
parser:mutex(
   parser:argument "input"
      :args "?",
   parser:flag "--process-stdin"
)

parser:mutex(
   parser:flag "-q --quiet",
   parser:flag "-v --verbose"
)

If more than one element of a mutually exclusive group is used, an error is raised.

$ lua script.lua -qv
Usage: script.lua ([-q] | [-v]) [-h] ([<input>] | [--process-stdin])

Error: option '-v' can not be used together with option '-q'
$ lua script.lua file --process-stdin
Usage: script.lua ([-q] | [-v]) [-h] ([<input>] | [--process-stdin])

Error: option '--process-stdin' can not be used together with argument 'input'