ltd-beget / yiiic
yii2 interactive console with smart autocomplete and context workflow
Installs: 4 585
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 26
Forks: 0
Open Issues: 5
Type:yii2-extension
Requires
- php: >=7.0.0
- ridzhi/smarrt: ~2.0
- symfony/process: ^3.1
- yiisoft/yii2: ~2.0
Requires (Dev)
- phpunit/phpunit: 5.4.*
README
#Yiiic - интерактивная консоль для Yii2
Интерактивная yiiic
консоль реализует умный автокомплит и контекстный воркфлоу.
##Установка
composer require ltd-beget/yiiic
Добавить yiiic
компонент в конфиг консольного приложения
$application = new yii\console\Application([ ... 'components' => [ 'yiiic' => [ 'class' => \LTDBeget\Yiiic\Yiiic::class ] ] ]);
Отнаследовать консольный конроллер как точку входа в интерактивный режим от \LTDBeget\Yiiic\YiiicController
use yii\console\Controller; class YiiicController extends \LTDBeget\Yiiic\YiiicController { }
Далее запуск
yii yiiic [... options]
Каждая команда выполняется в отдельном процессе
##Умный автокомплит
При работе с консолью, нажатие TAB вызывает автоподсказку возможных контроллеров/экшенов/опций. При реализации интерфейса ArgsCompleterInterface
возможен комплит по аргументам. Автокомплит работает по контексту, то есть если вы ввели migrate [press TAB]
и нажали таб, то получите список экшенов для migrate
.
- c - перейти в контекст
- h - помощь
- q - выход
Комманды можно передавать в любом месте, следующие вызовы равнозначны
migrate create c c migrate create
Для запуска комманды без контекста используется префикс /
##Конфигурация Конфигурация в порядке возрастания приоритета:
- default - дефолтный пресет
- component config
- cli config (путь к конфигу при запуске yiiic режима (
yii yiiic --config=custom/config/path
) ) - cli option (значение конкретного опшена, список доступных)
Дефолтный пресет
[ // внешние зависимости 'entities' => [ // $options полностью собранный массив настроек(после мержа всех источников) // apiReflector должен имплементить LTDBeget\Yiiic\ApiReflectorInterface 'apiReflector' => function($options) { return new ApiReflector($options['ignore']); } ], 'options' => [ // не выводить в хелпе 'ignore' => ['yiiic', 'help'], 'prompt' => 'yiiic', 'show_help' => Conf::SHOW_HELP_ONCE, // если вылезет exception 'show_trace' => false, // путь к скрипту консольного приложения 'entry_script' => Conf::ENTRY_SCRIPT_CURRENT, 'commands' => [ 'context' => 'c', 'quit' => 'q', 'help' => 'h' ], 'without_context_prefix' => '/', // высота в строках хелпа, если не будет // помещаться, рассчитается так чтоб влезло 'height_help' => 5, // стили для стильных 'style' => [ 'prompt' => [Console::FG_GREEN, Console::BOLD], 'welcome' => [Console::FG_YELLOW, Console::BOLD], 'bye' => [Console::FG_YELLOW, Console::BOLD], 'notice' => [Console::FG_YELLOW, Console::BOLD], 'error' => [Console::BG_RED], 'help' => [ 'title' => [Console::FG_YELLOW, Console::UNDERLINE], 'content' => [Console::FG_YELLOW, Console::ITALIC] ], 'result' => [ 'border' => [Console::FG_CYAN], 'content' => [Console::FG_CYAN], 'separator' => '=' ] ] ] ];
###Cli options --trace - options.show_trace
--script - options.entry_script
##События
- Yiiic::EVENT_BEFORE_RUN_ACTION
- Yiiic::EVENT_AFTER_RUN_ACTION
Подписка либо через конфиг компонента, либо имплементить YiiicController::prepareYiiic()
class YiiicController extends \LTDBeget\Yiiic\YiiicController { protected function prepareYiiic(Yiiic $yiiic) { $yiiic->on(Yiiic::EVENT_BEFORE_RUN_ACTION, 'func'); } }