Как расширить Shake дополнительными аргументами командной строки?
Я пытаюсь расширить аргумент командной строки Shake, имея в виду две цели:
- Взять дополнительные флаги, например
--foo
, - Обрабатывать аргументы, не являющиеся флагами, в зависимости от текущего рабочего каталога, поэтому
go
делает одно в корне, а другое вfoobar
каталог.
Как я могу это сделать?
1 ответ
Решение
Существует четыре соответствующих функции для расширения командной строки Shake:
shake
является основной точкой входа в Shake, которая занимаетShakeOptions
структура, описывающая все варианты. Если вам нужен полностью настраиваемый интерфейс командной строки, используйте любой анализатор командной строки для заполнения этих полей.shakeArgs
работает Shake заполнение вShakeOptions
используя аргументы командной строки, поэтому полезно получить стандартную командную строку с Shake.shakeArgsWith
принимает список дополнительных опций в качестве второго аргумента и логику того, как обращаться с любыми аргументами, не являющимися флагами, в качестве третьего аргумента. Вы можете ввести новые флаги и изменить, как не флаг, какgo
разрешается на основе любой другой информации, которую вам нужно передать, включая текущий каталог.shakeOptDescrs
дает типы данных, описывающие флаги, соответствующие полям вShakeOptions
,
Что касается их отношений, shake
это фактическая система сборки. shakeArgsWith
использует информацию из shakeOptDescrs
и любые пользовательские флаги для построения и запуска анализатора командной строки. shakeArgs
звонки shakeArgsWith
без дополнительных флагов.
В конкретном случае добавления флага или настройки поведения не-флага, shakeArgsWith
достаточно. Если вам нужно больше контроля, вы можете создать свой собственный синтаксический анализатор, возможно, включив существующие флаги, найденные в shakeOptDescrs
или нет.