UNPKG

slush-regenerator

Version:

A slush generator for many website things (Optimized for Laravel 5.2)

117 lines (99 loc) 3.98 kB
var _ = require('underscore'), changeCase = require('change-case'), pluralize = require('pluralize'), gutil = require('gulp-util'), FileQueue = require('filequeue'), fs = require('fs-extra'), path = require('path'); // Queue var fq = new FileQueue(256); // Configs var defaults = require('./../../../../../config/defaults.json'); /** * Laravel controller plugin for slush-blueprints **/ var controller = { counter: 0, traditional_logging: true, base_files_copied: false, /** * Create a controller based on passed parameters */ create: function(cwd, controllerName, parentControllerName, modelName, requestName, layoutName) { var resourceName = modelName; // TODO: Trim down this logic var filename = 'AdminController.php', relative_path = path.join('app', 'Http', 'Controllers'); // Open controller template file fq.readFile(path.join(cwd, 'templates', relative_path, 'Resources', filename), {encoding: defaults.encoding}, function (error, file_contents) { if (error) throw error; var template_data = {layoutName, controllerName, parentControllerName, modelName, resourceName, requestName}; var tpl = _.template(file_contents); var controller_file_contents = tpl(template_data); // Check if controller folder exists (Laravel instance) fq.exists(path.join('.', relative_path), function(path_exists) { if (path_exists) { // Create Resources folder if it does not exist var resource_controllers_path = path.join('.', relative_path, 'Resources'); if (!fs.existsSync(resource_controllers_path)) { fs.mkdirSync(resource_controllers_path); } // Create resource specific folder if it does not exist var resource_controller_path = path.join(resource_controllers_path, resourceName); if (!fs.existsSync(resource_controller_path)) { fs.mkdirSync(resource_controller_path); } // Write controller file fq.writeFile(path.join(resource_controller_path, filename), controller_file_contents, function (error) { if (error) throw error; controller.created(filename); }); } else { throw new Error( gutil.colors.red('Controller folder does not exist (' + relative_path + '), did you run this in the correct folder?') ); } }); }); }, /* Copy base files across */ copy_base_files: function(cwd) { if (!controller.base_files_copied) { controller.base_files_copied = true; var relative_path = path.join('app', 'Http', 'Controllers', 'Core'), src_path = path.join(cwd, 'templates', relative_path), dest_path = path.join('.', relative_path); // Create Resources folder if it does not exist if (!fs.existsSync(dest_path)) { fs.mkdirSync(dest_path); } fs.copy(src_path, dest_path, function (error) { if (error) throw error; var msg = 'Base controller file/s copied successfully'; gutil.log( gutil.colors.green(msg) ); }); } }, /* Callback for controller being created */ created: function(filename) { controller.counter++; if (controller.traditional_logging) { var msg = 'Controller file ' + filename + ' created! ' + '(Controller ' + controller.counter + ')'; gutil.log( gutil.colors.green(msg) ); } } }; module.exports = controller;