|
|
@@ -1,6 +1,6 @@
|
|
|
<?php
|
|
|
|
|
|
-use Routes\RouteCollection as RouteCollection;
|
|
|
+namespace App\Core\Generator;
|
|
|
|
|
|
class GeneratorController {
|
|
|
|
|
|
@@ -42,89 +42,110 @@ class GeneratorController {
|
|
|
<<<EOL
|
|
|
<?php
|
|
|
|
|
|
- \$plugin->name = '{{PLUGIN_NAME}}';
|
|
|
- \$plugin->version = '0.0.1';
|
|
|
+ \$plugin->name = '{{PLUGIN_NAME}}';
|
|
|
+ \$plugin->version = '0.0.1';
|
|
|
|
|
|
- //\$plugin->require = Array( ["name" => "plugin_name", "version" => 'x.x.x'] );
|
|
|
+ //\$plugin->require = Array( ["name" => "plugin_name", "version" => 'x.x.x'] );
|
|
|
EOL;
|
|
|
|
|
|
private $controllerBase =
|
|
|
<<<EOL
|
|
|
<?php
|
|
|
- class {{CONTROLLER}} {
|
|
|
-
|
|
|
- function index(){
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function create(){
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function Store(){
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- function show({{OBJECT}} \$instance){
|
|
|
-
|
|
|
- }
|
|
|
+
|
|
|
+ namespace {{NAMESPACE}};
|
|
|
+
|
|
|
+ use \{{NAMESPACE}}\Classes\{{OBJECT}} as {{OBJECT}};
|
|
|
+
|
|
|
+ class {{CONTROLLER}} {
|
|
|
|
|
|
- function edit({{OBJECT}} \$instance){
|
|
|
+ function index(){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ function create(){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- function update({{OBJECT}} \$instance){
|
|
|
+ function Store(){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ function show({{OBJECT}} \{{OBJECT_LOWER}}){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- function destroy({{OBJECT}} \$instance){
|
|
|
+ function edit({{OBJECT}} \{{OBJECT_LOWER}}){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ function update({{OBJECT}} \{{OBJECT_LOWER}}){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- function purge({{OBJECT}} \$instance){
|
|
|
+ function destroy({{OBJECT}} \{{OBJECT_LOWER}}){
|
|
|
+
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
+ function purge({{OBJECT}} \{{OBJECT_LOWER}}){
|
|
|
+
|
|
|
}
|
|
|
+ }
|
|
|
EOL;
|
|
|
|
|
|
|
|
|
private $objectBase =
|
|
|
<<<EOL
|
|
|
<?php
|
|
|
- use ORM\Entity as Entity;
|
|
|
|
|
|
- class {{OBJECT}} extends Entity {
|
|
|
-
|
|
|
- //const _idPolice = Array('type' => '', 'min' => 0, 'max' => 100000, 'step' => 2);
|
|
|
-
|
|
|
- const _tableName = '{{TABLE_NAME}}';
|
|
|
- //const _properties = Array('id', 'name');
|
|
|
+ namespace {{NAMESPACE}};
|
|
|
+
|
|
|
+ use ORM\Entity as Entity;
|
|
|
+
|
|
|
+ class {{OBJECT}} extends Entity {
|
|
|
+
|
|
|
+ //const _idPolice = Array('type' => '', 'min' => 0, 'max' => 100000, 'step' => 2);
|
|
|
+
|
|
|
+ const _tableName = '{{TABLE_NAME}}';
|
|
|
+ //const _properties = Array('id', 'name');
|
|
|
|
|
|
- //const _timestamps = true;
|
|
|
- //const _softdelete = true;
|
|
|
+ //const _timestamps = true;
|
|
|
+ //const _softdelete = true;
|
|
|
|
|
|
- //const _connectionName = '';
|
|
|
- }
|
|
|
+ //const _connectionName = '';
|
|
|
+ }
|
|
|
EOL;
|
|
|
|
|
|
private $routeBase =
|
|
|
<<<EOL
|
|
|
<?php
|
|
|
|
|
|
- use Routes\RouteCollection as RouteCollection;
|
|
|
-
|
|
|
- RouteCollection::group('/{{PLUGIN_NAME}}', function(){
|
|
|
- RouteCollection::get ('/', '{{CONTROLLER}}@index');
|
|
|
- RouteCollection::get ('/', '{{CONTROLLER}}@create');
|
|
|
- RouteCollection::post ('/', '{{CONTROLLER}}@store');
|
|
|
- RouteCollection::get ('/[i:id]', '{{CONTROLLER}}@show');
|
|
|
- RouteCollection::get ('/[i:id]/edit', '{{CONTROLLER}}@edit');
|
|
|
- RouteCollection::put ('/[i:id]/edit', '{{CONTROLLER}}@update');
|
|
|
- RouteCollection::delete('/[i:id]', '{{CONTROLLER}}@destroy');
|
|
|
- });
|
|
|
+ use Routes\RouteCollection as RouteCollection;
|
|
|
+
|
|
|
+ RouteCollection::group('/{{PLUGIN_NAME}}', function(){
|
|
|
+ RouteCollection::get ('/', '\{{NAMESPACE}}\{{CONTROLLER}}@index');
|
|
|
+ RouteCollection::get ('/', '\{{NAMESPACE}}\{{CONTROLLER}}@create');
|
|
|
+ RouteCollection::post ('/', '\{{NAMESPACE}}\{{CONTROLLER}}@store');
|
|
|
+ RouteCollection::get ('/[i:id]', '\{{NAMESPACE}}\{{CONTROLLER}}@show');
|
|
|
+ RouteCollection::get ('/[i:id]/edit', '\{{NAMESPACE}}\{{CONTROLLER}}@edit');
|
|
|
+ RouteCollection::put ('/[i:id]/edit', '\{{NAMESPACE}}\{{CONTROLLER}}@update');
|
|
|
+ RouteCollection::delete('/[i:id]', '\{{NAMESPACE}}\{{CONTROLLER}}@destroy');
|
|
|
+ });
|
|
|
EOL;
|
|
|
|
|
|
+ private $ctagsHeader =
|
|
|
+ <<<EOL
|
|
|
+ !_TAG_FILE_FORMAT 2 /extended format; --format=1 will not append ;" to lines/
|
|
|
+ !_TAG_FILE_SORTED 1 /0=unsorted, 1=sorted, 2=foldcase/
|
|
|
+ !_TAG_OUTPUT_FILESEP slash /slash or backslash/
|
|
|
+ !_TAG_OUTPUT_MODE u-ctags /u-ctags or e-ctags/
|
|
|
+ !_TAG_PROGRAM_AUTHOR Universal Ctags Team //
|
|
|
+ !_TAG_PROGRAM_NAME Universal Ctags /Derived from Exuberant Ctags/
|
|
|
+ !_TAG_PROGRAM_URL https://ctags.io/ /official site/
|
|
|
+ !_TAG_PROGRAM_VERSION 0.0.0 /a3c87ab5/
|
|
|
+ EOL;
|
|
|
+
|
|
|
function createPluginFromTemplate($subname, $name){
|
|
|
+
|
|
|
if (is_dir( DIR_APP.$subname . '/' . $name )){
|
|
|
echo 'Treco ja existe';
|
|
|
return;
|
|
|
@@ -135,8 +156,9 @@ class GeneratorController {
|
|
|
mkdir(DIR_APP.$subname . '/' . $name . '/db', 0755, true);
|
|
|
mkdir(DIR_APP.$subname . '/' . $name . '/views', 0755, true);
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
$plugin_name = $name;
|
|
|
+ $namespace = "App\\".ucfirst($subname).'\\'.ucfirst($name);
|
|
|
$plugin_name_pretty = ucwords(str_replace('_', ' ', $name));
|
|
|
$object = ucfirst( $name );
|
|
|
$controller = $object.'Controller';
|
|
|
@@ -146,39 +168,62 @@ class GeneratorController {
|
|
|
file_put_contents(DIR_APP.$subname . '/' . $name . '/lang/en.php', $this->langBase);
|
|
|
file_put_contents(DIR_APP.$subname . '/' . $name . '/lang/'.APP_LANG.'.php', $this->langBase);
|
|
|
|
|
|
- $this->migrationBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->migrationBase);
|
|
|
+ $this->migrationBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->migrationBase);
|
|
|
file_put_contents(DIR_APP.$subname . '/' . $name . '/db/Migrate.php', $this->migrationBase);
|
|
|
|
|
|
- $this->routeBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->routeBase);
|
|
|
- $this->routeBase = str_replace("{{CONTROLLER}}", $controller, $this->routeBase);
|
|
|
+ $this->routeBase = str_replace("{{NAMESPACE}}", $namespace, $this->routeBase);
|
|
|
+ $this->routeBase = str_replace("{{PLUGIN_NAME}}", $plugin_name, $this->routeBase);
|
|
|
+ $this->routeBase = str_replace("{{CONTROLLER}}", $controller, $this->routeBase);
|
|
|
file_put_contents(DIR_APP.$subname . '/' . $name . '/Routes.php', $this->routeBase);
|
|
|
|
|
|
- $this->objectBase = str_replace("{{OBJECT}}", $object, $this->objectBase);
|
|
|
- $this->objectBase = str_replace("{{TABLE_NAME}}", $name, $this->objectBase);
|
|
|
- file_put_contents(DIR_APP.$subname . '/' . $name . "/classes/$object.php", $this->objectBase);
|
|
|
+ $this->objectBase = str_replace("{{NAMESPACE}}", $namespace.'\Classes', $this->objectBase);
|
|
|
+ $this->objectBase = str_replace("{{OBJECT}}", $object, $this->objectBase);
|
|
|
+ $this->objectBase = str_replace("{{TABLE_NAME}}", $name, $this->objectBase);
|
|
|
+ file_put_contents(DIR_APP.$subname . '/' . $name . "/classes/$object.php", $this->objectBase);
|
|
|
|
|
|
- $this->controllerBase = str_replace("{{OBJECT}}", $object, $this->controllerBase);
|
|
|
- $this->controllerBase = str_replace("{{CONTROLLER}}", $controller, $this->controllerBase);
|
|
|
- file_put_contents(DIR_APP.$subname . '/' . $name . "/$controller.php", $this->controllerBase);
|
|
|
-
|
|
|
+ $this->controllerBase = str_replace("{{NAMESPACE}}", $namespace, $this->controllerBase);
|
|
|
+ $this->controllerBase = str_replace("{{OBJECT}}", $object, $this->controllerBase);
|
|
|
+ $this->controllerBase = str_replace("{{OBJECT_LOWER}}",strlower($object), $this->controllerBase);
|
|
|
+ $this->controllerBase = str_replace("{{CONTROLLER}}", $controller, $this->controllerBase);
|
|
|
+ file_put_contents(DIR_APP.$subname . '/' . $name . "/$controller.php", $this->controllerBase);
|
|
|
|
|
|
}
|
|
|
|
|
|
function listRoutes(){
|
|
|
- foreach(RouteCollection::returnRoutes() as $route){
|
|
|
- //var_dump($route->_callback);continue;//die();
|
|
|
- echo implode($route->_verb , ', ') ." || $route->_uri || $route->_weight||";
|
|
|
+ echo str_pad('VERB', 10, ' ', STR_PAD_BOTH) . "||";
|
|
|
+ echo str_pad('URI' , 35, ' ', STR_PAD_BOTH) . "||";
|
|
|
+ echo str_pad('W', 5, ' ', STR_PAD_BOTH) . "||";
|
|
|
+ echo str_pad('FUNCTION', 60, ' ', STR_PAD_BOTH) . "\n";
|
|
|
+ echo str_pad('', 120, '-') . "\n";
|
|
|
+ foreach(\Routes\RouteCollection::returnRoutes() as $route){
|
|
|
+ echo str_pad(implode($route->_verb , ', '), 10, ' ', STR_PAD_BOTH) . "||";
|
|
|
+ echo str_pad($route->_uri, 35, ' ', STR_PAD_RIGHT) . "||";
|
|
|
+ echo str_pad($route->_weight, 5, ' ', STR_PAD_BOTH). "||";
|
|
|
if( gettype($route->_callback[0]) == 'object' ){
|
|
|
- echo 'Clousure ||';
|
|
|
+ echo str_pad('Clousure', 60, ' ', STR_PAD_RIGHT);
|
|
|
}else{
|
|
|
- echo $route->_callback[0];
|
|
|
+ echo str_pad($route->_callback[0], 30, ' ', STR_PAD_RIGHT);
|
|
|
}
|
|
|
echo "\n";
|
|
|
}
|
|
|
- //file_put_contents('/tmp/Route.php', $this->routeBase);
|
|
|
- //echo $this->objectBase;
|
|
|
- echo APP_LANG;
|
|
|
}
|
|
|
+
|
|
|
+ function createTags(){
|
|
|
+ $outputs = shell_exec("grep -Rnsi '@ctag' . | sed s/\ //g | sed s/*@ctag/\ /g");
|
|
|
+ $outputs = preg_split('/\R/', $outputs);
|
|
|
+ $return = $this->ctagsHeader . "\n";
|
|
|
+ foreach($outputs as $output){
|
|
|
+ $line = explode(' ', str_replace('\\t', '', $output) );
|
|
|
+ @$line = $line[1] . "\t " . str_replace('./', '', explode(':', $line[0])[0]) . "\t ".$line[1] . "\n";
|
|
|
+ if( strpos($line, 'app/core/generator/GeneratorController.php') ){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ $return .= $line;
|
|
|
+ //echo "Generating: ".$line."\n";
|
|
|
+ }
|
|
|
+
|
|
|
+ file_put_contents(DIR_ROOT.'tags', $return);
|
|
|
+ }
|
|
|
|
|
|
}
|
|
|
|