mirror of
https://github.com/TangentFoxy/argparse.git
synced 2025-07-27 18:42:20 +00:00
92 lines
2.7 KiB
ReStructuredText
92 lines
2.7 KiB
ReStructuredText
Adding and configuring arguments
|
|
================================
|
|
|
|
Positional arguments can be added using ``:argument(name, description, default, convert, args)`` method. It returns an Argument instance, which can be configured in the same way as Parsers. The ``name`` property is required.
|
|
|
|
This and the following examples show contents of the result table returned by `parser:parse()` when the script is executed with given command-line arguments.
|
|
|
|
.. code-block:: lua
|
|
:linenos:
|
|
|
|
parser:argument "input"
|
|
|
|
.. code-block:: none
|
|
|
|
$ lua script.lua foo
|
|
|
|
.. code-block:: lua
|
|
|
|
{
|
|
input = "foo"
|
|
}
|
|
|
|
The data passed to the argument is stored in the result table at index ``input`` because it is the argument's name. The index can be changed using ``target`` property.
|
|
|
|
Setting number of consumed arguments
|
|
------------------------------------
|
|
|
|
``args`` property sets how many command line arguments the argument consumes. Its value is interpreted as follows:
|
|
|
|
================================================= =============================
|
|
Value Interpretation
|
|
================================================= =============================
|
|
Number ``N`` Exactly ``N`` arguments
|
|
String ``A-B``, where ``A`` and ``B`` are numbers From ``A`` to ``B`` arguments
|
|
String ``N+``, where ``N`` is a number ``N`` or more arguments
|
|
String ``?`` An optional argument
|
|
String ``*`` Any number of arguments
|
|
String ``+`` At least one argument
|
|
================================================= =============================
|
|
|
|
If more than one argument can be consumed, a table is used to store the data.
|
|
|
|
.. code-block:: lua
|
|
:linenos:
|
|
|
|
parser:argument("pair", "A pair of arguments.")
|
|
:args(2)
|
|
parser:argument("optional", "An optional argument.")
|
|
:args "?"
|
|
|
|
.. code-block:: none
|
|
|
|
$ lua script.lua foo bar
|
|
|
|
.. code-block:: lua
|
|
|
|
{
|
|
pair = {"foo", "bar"}
|
|
}
|
|
|
|
.. code-block:: none
|
|
|
|
$ lua script.lua foo bar baz
|
|
|
|
.. code-block:: lua
|
|
|
|
{
|
|
pair = {"foo", "bar"},
|
|
optional = "baz"
|
|
}
|
|
|
|
Setting argument choices
|
|
------------------------
|
|
|
|
The ``choices`` property can be used to restrict an argument to a set of choices. Its value is an array of string choices.
|
|
|
|
.. code-block:: lua
|
|
:linenos:
|
|
|
|
parser:argument "direction"
|
|
:choices {"north", "south", "east", "west"}
|
|
|
|
.. code-block:: none
|
|
|
|
$ lua script.lua foo
|
|
|
|
.. code-block:: none
|
|
|
|
Usage: script.lua [-h] {north,south,east,west}
|
|
|
|
Error: argument 'direction' must be one of 'north', 'south', 'east', 'west'
|