Как расширить 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 или нет.

Другие вопросы по тегам