[Перевод] Новый Vapor Toolbox

Toolbox был переписан с использованием лучших инструментов в экосистеме и новейших функций Swift, и теперь он стал еще более мощным, чем когда-либо!
Старый Toolbox
Vapor Toolbox — это инструмент командной строки, который используется для решения распространённых задач при работе с Vapor, таких как создание, компоновка, запуск и развёртывание проектов.
В настоящее время большинство подкоманд Toolbox устарели, поскольку Swift и экосистема эволюционировали, предоставляя более совершенные инструменты для решения этих задач. Единственная функция, которая по-прежнему очень полезна, — это команда new, которая используется для создания новых проектов Vapor на основе шаблонов.
Шаблоны Toolbox — это репозитории Git, содержащие проект Vapor, и они используют Mustache для замены заполнителей (placeholders) пользовательским вводом. Для создания шаблонов Mustache в Toolbox использовалась библиотека, поддерживаемая сообществом Vapor, которая представляет собой Swift-оболочку для синтаксического парсера mustach, написанную на C.
Toolbox был создан с использованием ConsoleKit, библиотеки, созданной командой Vapor, которая предоставляет API для создания интерактивных инструментов CLI, разработанных до появления Swift Argument Parser. Возможности ConsoleKit по обработке аргументов в настоящее время считаются устаревшими, и вместо них рекомендуется использовать Swift Argument Parser.
Переписывание Toolbox
Все устаревшие подкоманды были удалены, и единственная оставшаяся функция — это команда new.
Мы заменили оболочку mustach на swift-mustache от Hummingbird, которая представляет собой библиотеку рендеринга Mustache, полностью написанную на Swift.
Мы также отказались от использования ConsoleKit и заменили его на Swift Argument Parser, который теперь является рекомендуемым способом создания инструментов командной строки в экосистеме Swift. Swift Argument Parser не поддерживает динамические аргументы «из коробки», которые являются фундаментальной особенностью шаблонов Toolbox. Чтобы обойти это ограничение, мы внедрили решение, основанное на пользовательском отражении, которое позволяет нам динамически генерировать аргументы командной строки на основе файла манифеста шаблона.
Новый Toolbox написан на Swift 6, поэтому мы можем использовать новейшие языковые функции и улучшения, такие как Swift Testing для модульных тестов и Swift Format для редактирования кода.
Это обновление является еще одним шагом на пути к внедрению экосистемы Swift, а также предоставляет лучшие инструменты для сообщества Vapor.
Новые функции и обратная совместимость
Все шаблоны, которые работали со старым Toolbox, включая официальный шаблон Vapor и все существующие пользовательские шаблоны, должны продолжать работать с новой версией.
Определяющей характеристикой шаблона Vapor Toolbox является наличие файла манифеста YAML, в котором перечислены введённые пользователем переменные и указаны файлы шаблонов Mustache, которые будут отображаться с использованием этих значений, и общая структура этого файла не изменилась. Однако мы добавили в него новые функциональные возможности, такие как разрешение вложенных переменных для условного отображения файлов и каталогов и возможность определения пользовательского пути к файлу манифеста с помощью нового флага --manifest (по умолчанию используется файл manifest.yml, как и раньше).
Мы также добавили новый флаг --verbose в команду new, который, если он включён, выводит данные, аналогичные старой панели инструментов. Новый консольный вывод по умолчанию гораздо более лаконичен.
Также появился новый скрытый флаг --dump-variables, который отображает переменные шаблона в формате JSON. Это может быть полезно при интеграции Toolbox с другими инструментами, например, графическим интерфейсом или (внимание, спойлер!) расширением VS Code.
Примечание: Флаг --dump-variables является экспериментальным и нестабильным. В будущих версиях может измениться его поведение или он будет удалён.
Несмотря на то, что структура файла манифеста не сильно изменилась и должна быть в основном обратно совместима, с флагами произошли некоторые незначительные изменения; например, сокращенная версия флага --template была изменена с -T на -t.
Таким образом, эта новая версия Toolbox была выпущена в качестве основного дополнения к версии, и мы не гарантируем полную обратную совместимость.
Взгляните на --help для команды new, чтобы увидеть все доступные флаги и опции.
В заключение
Новый Vapor Toolbox доступен через Homebrew для macOS и Linux или может быть скомпилирован из исходного кода путём клонирования репозитория GitHub и использования Makefile для его установки. Все инструкции по его установке вы можете найти в README Toolbox. Там же вы найдете инструкции о том, как создавать свои собственные пользовательские шаблоны.
Шаблоны Toolbox очень эффективны, и их можно использовать для создания любого проекта, а не только для Vapor. Если у вас есть проект, который вы создаёте снова и снова, подумайте о создании для него шаблона Toolbox!
Прямо сейчас официальный шаблон Vapor использует только верхушку айсберга, но с новыми функциями, добавленными в Toolbox в этом обновлении, мы сможем добавить в него больше возможностей и улучшений, так что ожидайте обновлений в ближайшее время!