Моя программа использует несколько имен файлов в качестве аргументов командной строки, например:
./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 аргументы, и их синтаксическом анализе вручную, но с этим ограничением я даже не могу этого сделать.
Есть ли способ сделать это с хлопком?