Interactive console - tsafin/tarantool GitHub Wiki
Очевидно что есть некоторые вещи в консоли, которые влияют на собственно консоль, а есть вещи которые она перенаправляет в том или ином виде серверу
соответственно мне кажется что из имеющихся решений наиболее изящно это все решено в консоли psql:
- в каждый момент времени есть некий символ delimiter, который разделяет команды (по умолчанию - точка с запятой)
- есть спец-escape символ (в постгре это -
\) начиная строку которым мы даем указания консольке а не хотим выполнять команды
Формат команды в постгре такой (и мне кажется удобным)
\- escape символ[a-z]+- набор символов команды (первый символ - сама команда, второй и последующий - уточнения к ней)+- опциональный +, означает что выдача должна быть расширенной (если такое возможно)
Соответственно применительно к стартовому набору команд предлагаю следующий набор:
общие
\?- справка по работе с консолькой\h объект- справка по командам/переменным box.* в тарантуле\d- показать список спейсов\d имя/номер спейса- показать структуру спейса\l [lua|sql]- показать/изменить текущий язык запросов установленный в консоли (по умолчанию - lua)\g файл или канал- повторить последнюю команду и направить ее вывод в файл или канал\i[r] файл- выполнить команды из файла (r - путь к файлу относительный от текущего скрипта)
вывод
\a- переключение вывода: форматированный/неформатированный (тут можно дать формат - yaml/json например)\x- переключение вывода: простой/расширенный (в простом - тапл выводится в одну строку, в расширенном - в множество)
Хотелки
- Поддержку подклчения к нескольким tarantool
- Возможность переключения между серверами для выполнения команд на каком-либо сервере, а так же на всех сразу
- Возможность загрузки модулей, например каких-нибудь математических, для вычисления на локальной машине
- Возможность сохранения результата вывода из tarantool[ов] в файл на диск, а так же чтения из него