Interactive console - AnaNek/tarantool GitHub Wiki

Очевидно что есть некоторые вещи в консоли, которые влияют на собственно консоль, а есть вещи которые она перенаправляет в том или ином виде серверу

соответственно мне кажется что из имеющихся решений наиболее изящно это все решено в консоли psql:

  1. в каждый момент времени есть некий символ delimiter, который разделяет команды (по умолчанию - точка с запятой)
  2. есть спец-escape символ (в постгре это - \) начиная строку которым мы даем указания консольке а не хотим выполнять команды

Формат команды в постгре такой (и мне кажется удобным)

  • \ - escape символ
  • [a-z]+ - набор символов команды (первый символ - сама команда, второй и последующий - уточнения к ней)
  • + - опциональный +, означает что выдача должна быть расширенной (если такое возможно)

Соответственно применительно к стартовому набору команд предлагаю следующий набор:

общие

  • \? - справка по работе с консолькой
  • \h объект - справка по командам/переменным box.* в тарантуле
  • \d - показать список спейсов
  • \d имя/номер спейса - показать структуру спейса
  • \l [lua|sql] - показать/изменить текущий язык запросов установленный в консоли (по умолчанию - lua)
  • \g файл или канал - повторить последнюю команду и направить ее вывод в файл или канал
  • \i[r] файл - выполнить команды из файла (r - путь к файлу относительный от текущего скрипта)

вывод

  • \a - переключение вывода: форматированный/неформатированный (тут можно дать формат - yaml/json например)
  • \x - переключение вывода: простой/расширенный (в простом - тапл выводится в одну строку, в расширенном - в множество)

Хотелки

  • Поддержку подклчения к нескольким tarantool
  • Возможность переключения между серверами для выполнения команд на каком-либо сервере, а так же на всех сразу
  • Возможность загрузки модулей, например каких-нибудь математических, для вычисления на локальной машине
  • Возможность сохранения результата вывода из tarantool[ов] в файл на диск, а так же чтения из него