ok
Direktori : /home2/selectio/public_html/3-idiots/vendor/nwidart/laravel-modules/src/Commands/ |
Current File : /home2/selectio/public_html/3-idiots/vendor/nwidart/laravel-modules/src/Commands/InstallCommand.php |
<?php namespace Nwidart\Modules\Commands; use Illuminate\Console\Command; use Nwidart\Modules\Json; use Nwidart\Modules\Process\Installer; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class InstallCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'module:install'; /** * The console command description. * * @var string */ protected $description = 'Install the specified module by given package name (vendor/name).'; /** * Create a new command instance. */ public function __construct() { parent::__construct(); } /** * Execute the console command. */ public function handle() : int { if (is_null($this->argument('name'))) { return $this->installFromFile(); } $this->install( $this->argument('name'), $this->argument('version'), $this->option('type'), $this->option('tree') ); return 0; } /** * Install modules from modules.json file. */ protected function installFromFile() : int { if (!file_exists($path = base_path('modules.json'))) { $this->error("File 'modules.json' does not exist in your project root."); return E_ERROR; } $modules = Json::make($path); $dependencies = $modules->get('require', []); foreach ($dependencies as $module) { $module = collect($module); $this->install( $module->get('name'), $module->get('version'), $module->get('type') ); } return 0; } /** * Install the specified module. * * @param string $name * @param string $version * @param string $type * @param bool $tree */ protected function install($name, $version = 'dev-master', $type = 'composer', $tree = false) { $installer = new Installer( $name, $version, $type ?: $this->option('type'), $tree ?: $this->option('tree') ); $installer->setRepository($this->laravel['modules']); $installer->setConsole($this); if ($timeout = $this->option('timeout')) { $installer->setTimeout($timeout); } if ($path = $this->option('path')) { $installer->setPath($path); } $installer->run(); if (!$this->option('no-update')) { $this->call('module:update', [ 'module' => $installer->getModuleName(), ]); } } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return [ ['name', InputArgument::OPTIONAL, 'The name of module will be installed.'], ['version', InputArgument::OPTIONAL, 'The version of module will be installed.'], ]; } /** * Get the console command options. * * @return array */ protected function getOptions() { return [ ['timeout', null, InputOption::VALUE_OPTIONAL, 'The process timeout.', null], ['path', null, InputOption::VALUE_OPTIONAL, 'The installation path.', null], ['type', null, InputOption::VALUE_OPTIONAL, 'The type of installation.', null], ['tree', null, InputOption::VALUE_NONE, 'Install the module as a git subtree', null], ['no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies.', null], ]; } }