rollun-com/rollun-installer
最新稳定版本:5.1.0
Composer 安装命令:
composer require rollun-com/rollun-installer
包简介
Installer
README 文档
README
Оглавление
Документация rollun-installer
Библиотека install позволяет произвести настройку окружение для вашей библиотеки или приложения.
Вы должны создать реализации интерфейса InstallerInterface в которых и будет описана процедура настройки окружения.
Данные реализации обязаны содержать в себе суфикс Installer.
Так же существует InstallerAbstract абстрактная реализация интерфейса.
При ее использоваии вам нужно реализовать обязательные метды install, uninstall, isInstall, getDescription.
install- Установить данный инсталлер, и вернет конфиг который нужно добавить для работы данного инсталлера.uninstall- Удалить все созданное инсталятором.isInstall- Возвращяетtrueв случае если данный инсталлер был установлен, иfalseв ином случае.getDescription- Выводит на консоль описание данного инсталлера. Есть еще перечень дополнительные методов:isDefaultOn- Возвращаетtrueв случае если данный инсталлер рекомендован к установке.getDependencyInstallers- Возвращает список зависимых инсталлеров для данного инсталлера.
Инсталлера из данного списка будут запущены раньше основного инсталлера.
При запуске инсталяции, будут найдены все подобные инсталлеры в порядке сверху вниз.
Учитывайте это при напсании своих инсталлеров если вам важен порядок их вызова.
Данная библиотека позволяет настраивать окружение для зависимых библиотек.
Сначало будут обрабатыватся инсталлеры зависимых библиотек, а в конце ваши.
Вызов инсталяции в рантайме.
Так же иснталлер имеет возможность во время своей работы, вызвать установку другого иснталлера.
Для этого используйте метод InstallerAbstract::callInstaller($installerName), передав ему в парметры, имя желаемого инсталлера.
В качестве имени инсталлера используеться его className, то есть для инсталлера ExampleOneInstaller className -
rollun\installer\Example\ExampleOneInstaller::class.
Даный метод вернет массив-конфиг сгенерированый вызываемым инсталлером, либо пустой массив, в случае если инсталлер уже был установлен ранее.
Пример
Пример инсталлера который создает требуемый для приложения файл
<?php /** * Created by PhpStorm. * User: victorsecuring * Date: 30.12.16 * Time: 2:16 PM */ namespace rollun\logger; use Composer\IO\IOInterface; use Interop\Container\ContainerInterface; use rollun\installer\Command; use rollun\installer\Install\InstallerAbstract; use rollun\logger\Factory\LoggingErrorListenerDelegatorFactory; use rollun\logger\LogWriter\FileLogWriter; use rollun\logger\LogWriter\FileLogWriterFactory; use rollun\logger\LogWriter\LogWriterInterface; use Zend\Stratigility\Middleware\ErrorHandler; class LoggerInstaller extends InstallerAbstract { const LOGS_DIR = 'logs'; const LOGS_FILE = 'logs.csv'; /** * Make clean and install. * @return void */ public function reinstall() { $this->uninstall(); $this->install(); } /** * Clean all installation * @return void */ public function uninstall() { if (constant('APP_ENV') !== 'dev') { $this->consoleIO->write('constant("APP_ENV") !== "dev" It has did nothing'); } else { $publicDir = Command::getDataDir(); if (file_exists($publicDir . DIRECTORY_SEPARATOR . self::LOGS_DIR . DIRECTORY_SEPARATOR . self::LOGS_FILE)) { unlink($publicDir . DIRECTORY_SEPARATOR . self::LOGS_DIR . DIRECTORY_SEPARATOR . self::LOGS_FILE); } if (is_dir($publicDir . DIRECTORY_SEPARATOR . self::LOGS_DIR)) { rmdir($publicDir . DIRECTORY_SEPARATOR . self::LOGS_DIR); } } } /** * install * @return array */ public function install() { if (constant('APP_ENV') !== 'dev') { $this->consoleIO->write('constant("APP_ENV") !== "dev" It has did nothing'); } else { $dir = Command::getDataDir() . DIRECTORY_SEPARATOR . self::LOGS_DIR; if (!is_dir($dir)) { mkdir($dir, 0777, true); } $file = $dir . DIRECTORY_SEPARATOR . self::LOGS_FILE; fopen($file, "w"); file_put_contents($file, "id;level;message\n"); return [ 'dependencies' => [ 'factories' => [ FileLogWriter::class => FileLogWriterFactory::class, Logger::class => LoggerFactory::class, ], 'aliases' => [ LogWriterInterface::DEFAULT_LOG_WRITER_SERVICE => FileLogWriter::class, Logger::DEFAULT_LOGGER_SERVICE => Logger::class, ], 'delegators' => [ ErrorHandler::class => [ LoggingErrorListenerDelegatorFactory::class ] ] ] ]; } } public function isInstall() { $publicDir = Command::getDataDir(); $result = file_exists($publicDir . DIRECTORY_SEPARATOR . self::LOGS_DIR . DIRECTORY_SEPARATOR . self::LOGS_FILE); $result &= $this->container->has(LogWriterInterface::DEFAULT_LOG_WRITER_SERVICE); $result &= $this->container->has(Logger::DEFAULT_LOGGER_SERVICE); return $result; } public function isDefaultOn() { return true; } public function getDescription($lang = "en") { switch ($lang) { case "ru": $description = "Предоставяляет обьект logger позволяющий писать сообщения в лог.\n" . "LoggerException которое позволяет записывать в лог возникшее исключение, а так же предшествующее ему."; break; default: $description = "Does not exist."; } return $description; } } ?>
Переменные окружения
Для обозначения типа рабочего окружения используется переменная окружения APP_EVN
Используйте ее что бы определять для какого окружение происходит настройка.
Так же должны быть переменная MACHINE_NAME которая должна содержать в себе имя текущей контейнера/машины.
Она должна содержать имя в таком виде {server_name}-{vm_name}-{container_name}.
В случае если одной составляющей из данной цепочи не существует - пропустите ее.
Пример:
ServerDrakon-ProductionVM-5000ServerDrakon-ProductionVM-ServerDrakon--5000ServerDrakon--
Запуск установщиков
Для того что бы можно было запускать инсталлеры используя композер вы должны установить rollun-com/rollun-installer в качестве зависимости.
Теперь после того как все предыдущее шаги были сделаны, вы можете используя команды
composer lib install- Запускать инсталяторы для настрройки окружения.composer lib uninstall- Удалять настроки окружения. Так же существует необязательный параметр-l=которым можно указать язык на котором будет выводится описаниеcomposer lib install -l=ru- Запускать инсталяторы, описание выводить на русском языке.- Так же для удобства существует флаг
debug- он выведет всю информацию о найденый и проаналезированых библиотеках в котором не нашел инсталлера. Подобные данные могут помочь в отладке. Пример использованияcomposer lib install debug.
Composer\IO\IOInterface
Для удобства использования, созданы вспомогательные функции
InstallerAbstract::askParams- будет повторять вопрос и сообщать об ошибке пока ответ пустойInstallerAbstract::askParamWithDefault- спросить пользователя хочет ли он использовать значение по умолчанию если ответ отрецательный попросить пользователя ввести значение.
Краткий туториал
Что бы вывести сообщение используйте ф-цию write
$io->write("some text");
Что бы вывести сообщение об ошибке используйте ф-цию write
$io->writeError(("some text");
Что бы задать пользователю вопрос используйте ф-цию write
$answer = $io->ask("question");
Для более детального изучения читайте документацию.
Debug
Для убдобства отладки ваших Installers есть скрипт InstallerSelfCall, ознакомится с ним можно тут.
统计信息
- 总下载量: 8.96k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 1
- 点击次数: 1
- 依赖项目数: 6
- 推荐数: 0
其他信息
- 授权协议: proprietary
- 更新时间: 2017-01-11