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

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

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

Например.

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

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

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

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

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

Ответы на вопрос(1)

Ваш ответ на вопрос