Завершение, когда в программе есть подкоманды

Я написал инструмент командной строки, который использует подкоманды, похожие на Mercurial, Git, Subversion и т. Д., В том смысле, что его общее использование таково:

>myapp [OPTS] SUBCOMMAND [SUBCOMMAND-OPTS] [ARGS]

Например.

>myapp --verbose speak --voice=samantha --quickly "hello there"

Сейчас я работаю над завершением Zsh для него, но быстро обнаружил, что это очень сложный зверь. Я смотрел доработки _hg и _git , но они очень сложны и различаются по подходу (мне сложно их понять), но оба, похоже, обрабатывают каждую подкоманду отдельно .

Кто-нибудь знает, существует ли способ использования встроенных функций ( _arguments , _values ​​, pick_variant и т. Д.) Для обработки концепции подкоманд правильно, включая обработку общих опций и опций, специфичных для подкоманд? Или лучше всего было бы вручную обрабатывать общие параметры и подкоманды?

Нежелательный пример был бы очень признателен.

Большое спасибо.

16
задан Paul Ruane 25 January 2012 в 09:57
поделиться