File "ModuleMakeCommand.php"
Full Path: /home/pulsehostuk9/public_html/invoicer.pulsehost.co.uk/vendor/invoiceshelf/modules/src/Activators/ModuleMakeCommand.php
File size: 2.59 KB
MIME-type: text/x-php
Charset: utf-8
<?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';
}
}
}