rockspec_format = '3.0' package = 'tnt-console' version = 'scm-1' source = { url = 'git+https://github.com/tnt-skein/tnt-console.git', branch = 'main', } description = { summary = 'Консольные команды приложения поверх argparse: код выхода, вывод, запуск процессом', detailed = [[ Команда объявляется таблицей: описание, аргументы, ключи и обработчик. Командную строку разбирает рок argparse, а пакет даёт то, чего у рока нет: справка и отказ разбора не завершают процесс, поэтому ту же команду зовут и из командной строки, и из кода; слова разбора — по-русски; неверное объявление — бросок на строке объявления, а не отказ у оператора. Код выхода различает удачу (0), отказ обработчика (1), неверный вызов (2) и поломку — бросок обработчика (70). Обработчик пишет в вывод, не зная, куда он уйдёт: в потоки процесса либо в итог вызова из кода. Таблица выравнивается по знакам UTF-8, значение показывается человеку без броска и с тайнами под отметкой. Команда отдельным процессом идёт тем же Tarantool: долгая работа без уступки не держит узел, у запуска есть срок, просроченный процесс убит вместе с группой. Команда на узле идёт функцией узла по iproto: узел выполняет командную строку, а сценарий оператора повторяет вывод и код выхода, которым она кончилась на узле; учётке хватает права на одну функцию. Зависит от argparse (разбор), tnt-process (процесс и отказ), tnt-debug (показ значения), tnt-must (проверки аргументов) и tnt-external (подмена вывода, выхода и клиента iproto в проверках). Покрытие строк и убитых мутантов — 100 %. ]], homepage = 'https://github.com/tnt-skein/tnt-console', issues_url = 'https://github.com/tnt-skein/tnt-console/issues', maintainer = 'tnt-skein', license = 'MIT', labels = { 'tarantool', 'console', 'cli', 'argparse', 'command' }, } dependencies = { 'lua >= 5.1', -- Разбор командной строки. Выпуск закреплён: его отказы и строка -- вызова переводятся по образцам предложений, и каждое сверено -- проверкой на этом выпуске. Подъём — отдельная правка со сверкой -- заново. 'argparse == 0.7.2-1', -- Запуск команды отдельным процессом; вызов из кода отказывает тем же -- отказом, что и процесс. 'tnt-process', -- Показ значения человеку. 'tnt-debug', -- Проверки объявлений и аргументов на строке вызывающего. 'tnt-must', -- Вывод, аргументы процесса, выход и клиент iproto подменяются -- в проверках. 'tnt-external', } build = { type = 'builtin', modules = { ['tnt.console'] = 'tnt/console.lua', ['tnt.console.app'] = 'tnt/console/app.lua', ['tnt.console.declaration'] = 'tnt/console/declaration.lua', ['tnt.console.output'] = 'tnt/console/output.lua', ['tnt.console.parser'] = 'tnt/console/parser.lua', ['tnt.console.phrases'] = 'tnt/console/phrases.lua', ['tnt.console.remote'] = 'tnt/console/remote.lua', ['tnt.console.system'] = 'tnt/console/system.lua', }, }