У меня есть вариант использования, когда пользователи предоставляют строку документа, и на ее основе я генерирую некоторый код. Так что я не знаю свою строку docopt заранее.
Для определенных «типов аргументов» (не типов данных) я хочу сгенерировать различный код.
Далее я буду различать «типы» и «типы данных». Для аргумента docopt --arg=DEGREES
и ввода argv --arg=10
«тип» --arg
равен DEGREES
, а тип данных — integer
. Значение равно 10
.
Пользователь может дать мне следующую строку документа:
Naval Fate.
Usage:
naval_fate --dir=FILE [--speed=ABC]
Options:
--dir=FILE Moored (anchored) mine.
--speed=ABC Speed in knots [default: 10].
Помимо обычного разбора этой строки docopt, я также пытаюсь выяснить, какой «тип» аргумента запрашивает dir
и speed
. Я хочу знать, что dir
относится к типу FILE
, а speed
относится к типу ABC
.
Пример:
Учитывая приведенную выше строку docopt и строку argv naval_fate --dir=/tmp --speed 1234
, я надеюсь получить доступ не только к значению и типу данных (<key> => <value,datatype>
), но и к «типу конфигурации» (<key> => <value,datatype,argtype>
, то есть что-то вроде:
dir
=> значение: /tmp
, тип данных: String
, тип: FILE
speed
=> значение: 1234
, тип данных: Integer
, тип: ABC
Приемлема любая (управляемая) реализация docopt, в том числе Python, хотя предпочтительно я ищу решение на скомпилированном языке, будь то C, Go, Rust и т. д.