Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
vendor
/
invoiceshelf
/
modules
/
src
/
Providers
:
ModuleMakeCommand.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php namespace Nwidart\Modules\Commands; use Illuminate\Console\Command; use Nwidart\Modules\Contracts\ActivatorInterface; use Nwidart\Modules\Generators\ModuleGenerator; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; class ModuleMakeCommand extends Command { /** * The console command name. * * @var string */ protected $name = 'module:make'; /** * The console command description. * * @var string */ protected $description = 'Create a new module.'; /** * Execute the console command. */ public function handle() : int { $names = $this->argument('name'); $success = true; foreach ($names as $name) { $code = with(new ModuleGenerator($name)) ->setFilesystem($this->laravel['files']) ->setModule($this->laravel['modules']) ->setConfig($this->laravel['config']) ->setActivator($this->laravel[ActivatorInterface::class]) ->setConsole($this) ->setForce($this->option('force')) ->setType($this->getModuleType()) ->setActive(!$this->option('disabled')) ->generate(); if ($code === E_ERROR) { $success = false; } } return $success ? 0 : E_ERROR; } /** * Get the console command arguments. * * @return array */ protected function getArguments() { return [ ['name', InputArgument::IS_ARRAY, 'The names of modules will be created.'], ]; } protected function getOptions() { return [ ['plain', 'p', InputOption::VALUE_NONE, 'Generate a plain module (without some resources).'], ['api', null, InputOption::VALUE_NONE, 'Generate an api module.'], ['web', null, InputOption::VALUE_NONE, 'Generate a web module.'], ['disabled', 'd', InputOption::VALUE_NONE, 'Do not enable the module at creation.'], ['force', null, InputOption::VALUE_NONE, 'Force the operation to run when the module already exists.'], ]; } /** * Get module type . * * @return string */ private function getModuleType() { $isPlain = $this->option('plain'); $isApi = $this->option('api'); if ($isPlain && $isApi) { return 'web'; } if ($isPlain) { return 'plain'; } elseif ($isApi) { return 'api'; } else { return 'web'; } } }