UNPKG

generator-robonkey

Version:

A Yeoman generator for Gulp, Templating, CSS Preprocessors, Coffeescript, PostCSS, Modernizr, svg icons/icon font generator, BrowserSync, and some libraries to choose from. Express, Wordpress, Drupal, CodeIgniter, Laravel subgenerators are available.

166 lines (132 loc) 4.68 kB
'use strict'; var yeoman = require('yeoman-generator'), yosay = require('yosay'), fs = require('fs'), path = require('path'), util = require('util'), chalk = require('chalk'), rimraf = require('rimraf'), exec = require('child_process').exec, semver = require('semver'), mkdirp = require('mkdirp'), generatorName = path.basename(__dirname); var greeting = require('../app/helpers/greeting'), walk = require('../app/helpers/walk'), printTitle = require('../app/helpers/printTitle'), hasFeature = require('../app/helpers/hasFeature'), createJson = require('../app/helpers/createJson'); var init = require('../app/config/init'), setConfigVars = require('../app/config/setConfigVars'), setConfigFiles = require('../app/config/setConfigFiles'), setBaseConfigVars = require('../app/config/setBaseConfigVars'), getFramework = require('../app/config/getFramework'); var structureExistsPrompt = require('../app/prompts/structureExistsPrompt'), frameworkPrompt = require('../app/prompts/frameworkPrompt'), gulpPrompt = require('../app/prompts/gulpPrompt'), staticPrompt = require('../app/prompts/staticPrompt'); module.exports = yeoman.generators.Base.extend({ initializing: function(){ var done = this.async(), self = this; init(this, function(){ greeting(self); done(); }); }, prompting: { existingEnvironment: function(){ this.cfg.environmentOption ='codeigniter'; if(this.calledFrom === 'app' || !this.calledFrom){ var done = this.async(), self = this, destRoot = this.destinationRoot(), frameworks = ['wordpress', 'codeigniter', 'drupal', 'express', 'laravel']; frameworkPrompt(frameworks, destRoot, this.calledFrom, this, function(environmentOption){ self.cfg.environmentOption = environmentOption; }); } }, gulp: function(){ var done = this.async(); gulpPrompt(this, function(){ done(); }) }, codeigniter: function(){ if(this.exit) return; var done = this.async(), self = this; var codeigniter2 = '2.2.6', codeigniter3 = '3.0.6'; console.log(printTitle('Configuring CodeIgniter')); this.prompt([{ type: 'list', name: 'codeigniterVersion', message: 'Which version of CodeIgniter do you want?', choices: [codeigniter2, codeigniter3, 'Specify a version'], default: codeigniter3 }, { when: function(answers){ return answers.codeigniterVersion === 'Specify a version' }, name: 'codeigniterVersion', message: 'Specify a Codigniter version (0.0.0)', default: '0.0.0' }, { name: 'mainDir', message: 'Where to place CodeIgniter?', default: function(answers) { if(self.cfg.mainDir) { return self.cfg.mainDir } else { return 'website' } } }, ], function (answers) { this.cfg.environmentOption = 'codeigniter'; this.cfg.mainDir = answers.mainDir; this.cfg.codeigniterVersion = answers.codeigniterVersion; done(); }.bind(this)); }, }, configuring: { answers: function () { if(this.exit) return; var done = this.async(), self = this; setBaseConfigVars(this, function(){ self.codeigniterVersion = self.cfg.codeigniterVersion; self.config.set(self.cfg); done(); }); } }, writing: { downloading: function(){ if(this.exit) return; var done = this.async(), self = this; console.log(printTitle('Installing CodeIgniter')); console.log('Downloading CodeIgniter version ' + this.codeigniterVersion); try { fs.accessSync(self.mainDir, fs.F_OK); console.log('Folder ' + self.mainDir + ' exists'); rimraf(self.mainDir, function(){ getFramework.codeigniter(self, function(){ done(); }) }); } catch (e) { console.log('Folder ' + self.mainDir + ' doesn\'t exist'); getFramework.codeigniter(self, function(){ done(); }) } } }, end: function(){ console.log(printTitle('CodeIgniter is installed')); console.log('You can now run ' + chalk.yellow.bold('yo robonkey') + ' to continue installing your project.\n\n') } });