diff options
Diffstat (limited to 'fai_gestion/plugins')
-rw-r--r-- | fai_gestion/plugins/CustomTheme/src/Shell/BakeShell.php | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/fai_gestion/plugins/CustomTheme/src/Shell/BakeShell.php b/fai_gestion/plugins/CustomTheme/src/Shell/BakeShell.php new file mode 100644 index 0000000..6734006 --- /dev/null +++ b/fai_gestion/plugins/CustomTheme/src/Shell/BakeShell.php @@ -0,0 +1,86 @@ +<?php +/** + * Copyright 2016-2018 Ludovic Pouzenc <ludovic@pouzenc.fr> + * Copyright 2016 Nicolas Goaziou <mail@nicolasgoaziou.fr> + * + * This file is part of FAI Gestion forked from CHD Gestion. + * + * FAI Gestion is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * FAI Gestion is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with FAI Gestion. If not, see <http://www.gnu.org/licenses/>. +**/ +namespace CustomTheme\Shell; + +use Cake\Console\Shell; +use Cake\Utility\Inflector; +use Bake\Shell\BakeShell as BaseShell; + +class BakeShell extends BaseShell { + + /** + * Assign $this->connection to the active task if a connection param is set. + * + * @return void + */ + public function startup() + { + parent::startup(); + } + + /** + * Quickly bake the MVC + * + * @param string|null $name Name. + * @return bool + */ + public function all($name = null) + { + $this->out('Bake All'); + $this->hr(); + + if (!empty($this->params['connection'])) { + $this->connection = $this->params['connection']; + } + + if (empty($name) && !$this->param('everything')) { + $this->Model->connection = $this->connection; + $this->out('Possible model names based on your database:'); + foreach ($this->Model->listUnskipped() as $table) { + $this->out('- ' . $table); + } + $this->out('Run <info>`cake bake all [name]`</info> to generate skeleton files.'); + + return false; + } + + $allTables = collection([$name]); + $filteredTables = $allTables; + + if ($this->param('everything')) { + $this->Model->connection = $this->connection; + $filteredTables = collection($this->Model->listUnskipped()); + } + + foreach (['Model', 'Controller', 'Template'] as $task) { + $filteredTables->each(function ($tableName) use ($task) { + $tableName = $this->_camelize($tableName); + $this->{$task}->connection = $this->connection; + $this->{$task}->interactive = $this->interactive; + $this->{$task}->main($tableName); + }); + } + + $this->out('<success>Bake All complete.</success>', 1, Shell::QUIET); + + return true; + } +} |