2 changed files with 160 additions and 129 deletions
@ -0,0 +1,131 @@ |
|||||
|
<?php |
||||
|
|
||||
|
namespace Luthfi\CrudGenerator; |
||||
|
|
||||
|
use Illuminate\Console\Command; |
||||
|
use Illuminate\Console\DetectsApplicationNamespace; |
||||
|
use Illuminate\Filesystem\Filesystem; |
||||
|
|
||||
|
class GeneratorCommand extends Command |
||||
|
{ |
||||
|
use DetectsApplicationNamespace; |
||||
|
|
||||
|
/** |
||||
|
* The injected Filesystem class |
||||
|
* |
||||
|
* @var Filesystem |
||||
|
*/ |
||||
|
private $files; |
||||
|
|
||||
|
/** |
||||
|
* Array of defined model names |
||||
|
* |
||||
|
* @var array |
||||
|
*/ |
||||
|
public $modelNames = []; |
||||
|
|
||||
|
/** |
||||
|
* Array of stub's model names |
||||
|
* |
||||
|
* @var array |
||||
|
*/ |
||||
|
public $stubModelNames = [ |
||||
|
'model_namespace' => 'mstrNmspc', |
||||
|
'full_model_name' => 'fullMstr', |
||||
|
'plural_model_name' => 'Masters', |
||||
|
'model_name' => 'Master', |
||||
|
'table_name' => 'masters', |
||||
|
'lang_name' => 'master', |
||||
|
'collection_model_var_name' => 'mstrCollections', |
||||
|
'single_model_var_name' => 'singleMstr', |
||||
|
]; |
||||
|
|
||||
|
/** |
||||
|
* Construct CrudMake class |
||||
|
* |
||||
|
* @param Filesystem $files Put generated file content to application file system |
||||
|
*/ |
||||
|
public function __construct(Filesystem $files) |
||||
|
{ |
||||
|
parent::__construct(); |
||||
|
|
||||
|
$this->files = $files; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Generate class properties for model names in different usage |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function getModelName($modelName = null) |
||||
|
{ |
||||
|
$modelName = is_null($modelName) ? $this->argument('name') : $modelName; |
||||
|
$model_name = ucfirst(class_basename($modelName)); |
||||
|
$plural_model_name = str_plural($model_name); |
||||
|
$modelPath = $this->getModelPath($modelName); |
||||
|
$modelNamespace = $this->getModelNamespace($modelPath); |
||||
|
|
||||
|
return $this->modelNames = [ |
||||
|
'model_namespace' => $modelNamespace, |
||||
|
'full_model_name' => $modelNamespace.'\\'.$model_name, |
||||
|
'plural_model_name' => $plural_model_name, |
||||
|
'model_name' => $model_name, |
||||
|
'table_name' => snake_case($plural_model_name), |
||||
|
'lang_name' => snake_case($model_name), |
||||
|
'collection_model_var_name' => camel_case($plural_model_name), |
||||
|
'single_model_var_name' => camel_case($model_name), |
||||
|
'model_path' => $modelPath, |
||||
|
]; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get model path on storage |
||||
|
* |
||||
|
* @param string $modelName Input model name from command argument |
||||
|
* @return string Model path on storage |
||||
|
*/ |
||||
|
protected function getModelPath($modelName) |
||||
|
{ |
||||
|
$inputName = explode('/', ucfirst($modelName)); |
||||
|
array_pop($inputName); |
||||
|
|
||||
|
return implode('/', $inputName); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Get model namespace |
||||
|
* |
||||
|
* @param string $modelPath Model path |
||||
|
* @return string Model namespace |
||||
|
*/ |
||||
|
protected function getModelNamespace($modelPath) |
||||
|
{ |
||||
|
$appNamespace = trim($this->getAppNamespace(), '\\'); |
||||
|
$modelNamespace = str_replace('/', '\\', $appNamespace.'/'.ucfirst($modelPath)); |
||||
|
return $modelNamespace == 'App\\' ? 'App' : $modelNamespace; |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Check for Model file existance |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function modelExists() |
||||
|
{ |
||||
|
return $this->files->exists( |
||||
|
app_path($this->modelNames['model_path'].'/'.$this->modelNames['model_name'].'.php') |
||||
|
); |
||||
|
} |
||||
|
|
||||
|
/** |
||||
|
* Check for default layout view file existance |
||||
|
* |
||||
|
* @return void |
||||
|
*/ |
||||
|
public function defaultLayoutNotExists() |
||||
|
{ |
||||
|
return !$this->files->exists( |
||||
|
resource_path('views/'.str_replace('.', '/', config('simple-crud.default_layout_view')).'.blade.php') |
||||
|
); |
||||
|
} |
||||
|
} |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue