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[ов] в файл на диск, а так же чтения из него