Расширение функциональности tt
Утилита tt реализует модульную архитектуру: её команды фактически
являются отдельными модулями. При запуске tt с командой выполняется соответствующий модуль с заданными аргументами.
Благодаря модульной архитектуре функциональность tt можно расширить с помощью внешних модулей
(в отличие от внутренних модулей, реализующих встроенные команды). Иными словами, можно написать любой
код, который требуется выполнить из tt, упаковать его в исполняемый файл и запустить командой tt:
tt my-module-name my-args
Имя команды, выполняющей модуль, совпадает с именем исполняемого файла модуля.
Исполняемые файлы, реализующие внешние модули tt, должны поддерживать два параметра:
--description– вывести краткое описание модуля. Описание отображается рядом с командой в справкеtt.--help– показать справку. Сообщение справки отображается при вызовеtt help <module_name>.
Внешние модули должны располагаться в каталоге модулей, указанном в файле конфигурации:
tt:modules:directory: path/to/modules/dir
Чтобы проверить доступность модуля в tt, вызовите tt help. Доступные внешние модули отображаются в
разделе EXTERNAL COMMANDS вместе с их описаниями.
Внешние модули могут перегружать встроенные команды tt. Чтобы изменить поведение встроенной команды,
создайте внешний модуль с тем же именем и собственной реализацией.
При обнаружении двух модулей – внешнего и внутреннего - с одинаковым именем по умолчанию используется внешний модуль.
Например, если требуется, чтобы tt показывал информацию о приложении Tarantool, напишите внешний модуль version,
который выводит нужную информацию. Вызов tt version выполнит этот модуль вместо встроенного:
tt version # Вызывает внешний модуль, если он доступен
Можно принудительно использовать внутренний модуль, запустив tt
с параметром --internal или -I. Следующий вызов
выполнит встроенную команду version, даже если существует внешний модуль с таким же именем:
tt version -I # Вызывает внутренний модуль