Аргументы CLI, которые принимают свои собственные аргументы с Clap - PullRequest
0 голосов
/ 20 апреля 2020

Моя программа использует несколько имен файлов в качестве аргументов командной строки, например:

./myProgram -F file1 file2

Этот простой случай прекрасно работает с Clap, на самом деле это do c пример Arg::multiple().

Однако я также хотел бы, чтобы каждый файл принимал свои аргументы, которые изменяют поведение этого конкретного файла. Упрощенный пример:

./myProgram -F --name file1 ---format csv --priority 2 -F --name file2 --priority 1

Здесь файл1 имеет более высокий приоритет и отличается от формата файла2.

Простое использование Arg :: multiple () больше не работает, так как c аргументы (формат, приоритет), определяемые в файле, анализируются как независимые аргументы, без возможности узнать, к какому файлу они принадлежат.

Arg :: allow_hyphen_values ​​() кажется , чтобы помочь мне в этом. Но он просто анализирует каждое вхождение --name, file1, --format et c как значение параметра -F, без возможности узнать, какой аргумент --priority принадлежит какому файлу. Я думал об использовании другого синтаксиса для файлов, указывающих c аргументы, и их синтаксическом анализе вручную, но с этим ограничением я даже не могу этого сделать.

Есть ли способ сделать это с хлопком?

...