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.
214 lines (174 loc) • 5.33 kB
JavaScript
'use strict';
var yeoman = require('yeoman-generator'),
fs = require('fs'),
path = require('path'),
chalk = require('chalk'),
mkdirp = require('mkdirp'),
jsonfile = require('jsonfile'),
generatorName = path.basename(__dirname);
var greeting = require('../app/helpers/greeting'),
hasFeature = require('../app/helpers/hasFeature'),
printTitle = require('../app/helpers/printTitle');
var init = require('../app/config/init'),
setConfigVars = require('../app/config/setConfigVars'),
setConfigFiles = require('../app/config/setConfigFiles'),
installDep = require('../app/config/installDep'),
copyFiles = require('../app/config/copyFiles'),
setStylesAnswers = require('../app/config/setStylesAnswers');
var structureExistsPrompt = require('../app/prompts/structureExistsPrompt'),
gulpPrompt = require('../app/prompts/gulpPrompt'),
structurePrompt = require('../app/prompts/structurePrompt'),
baseStylesPrompt = require('../app/prompts/baseStylesPrompt'),
preprocessorsPrompt = require('../app/prompts/preprocessorsPrompt'),
scssPrompt = require('../app/prompts/scssPrompt'),
stylusPrompt = require('../app/prompts/stylusPrompt'),
lessPrompt = require('../app/prompts/lessPrompt'),
customPrecssPrompt = require('../app/prompts/customPrecssPrompt'),
customPrecssExtrasPrompt = require('../app/prompts/customPrecssExtrasPrompt'),
customPrecssMixinsPrompt = require('../app/prompts/customPrecssMixinsPrompt'),
customPrecssGridsPrompt = require('../app/prompts/customPrecssGridsPrompt'),
postcssPrompt = require('../app/prompts/postcssPrompt');
var dirsToCheck = ['mainDir', 'assetsDir', 'cssDir', 'jsDir', 'libDir', 'fontDir'];
module.exports = yeoman.Base.extend({
initializing: function(){
var done = this.async(),
self = this;
init(this, function(){
greeting(self);
done();
});
},
prompting: {
gulp: function(){
if(this.exit) return;
var done = this.async();
var self = this;
gulpPrompt(this, function(){
done();
})
},
// existingStructure: function(){
// if(this.exit) return;
// var done = this.async();
// structureExistsPrompt(this, dirsToCheck, function(){
// done();
// })
// },
structure: function(){
if(this.exit) return;
var done = this.async();
if(!this.calledFrom && !this.continueStructure) {
structurePrompt(this, dirsToCheck, function(){
done();
})
} else {
done();
}
},
baseStyles: function(){
if(this.exit) return;
var done = this.async();
baseStylesPrompt(this, function(){
done();
})
},
preprocessors: function(){
if(this.exit) return;
var done = this.async();
preprocessorsPrompt(this, function(){
done();
})
},
scss: function(){
if(this.exit) return;
var done = this.async();
scssPrompt(this, function(){
done();
})
},
stylus: function(){
if(this.exit) return;
var done = this.async();
stylusPrompt(this, function(){
done();
})
},
less: function(){
if(this.exit) return;
var done = this.async();
lessPrompt(this, function(){
done();
})
},
customPrecss: function(){
if(this.exit) return;
var done = this.async();
customPrecssPrompt(this, function(){
done();
})
},
customPrecssExtras: function(){
if(this.exit) return;
var done = this.async();
customPrecssExtrasPrompt(this, function(){
done();
})
},
customPrecssMixins: function(){
if(this.exit) return;
var done = this.async();
customPrecssMixinsPrompt(this, function(){
done();
})
},
customPrecssGrids: function(){
if(this.exit) return;
var done = this.async();
customPrecssGridsPrompt(this, function(){
done();
})
},
postcss: function(){
if(this.exit) return;
var done = this.async();
postcssPrompt(this, function(){
done();
})
}
},
configuring: {
answers: function(){
if(this.exit) return;
var done = this.async();
setStylesAnswers(this, function(){
done();
});
},
config: function(){
if(this.exit) return;
var done = this.async();
setConfigFiles(this, function(){
done();
});
},
},
writing: function(){
if(this.exit) return;
var done = this.async(),
destRoot = this.destinationRoot(),
gulpRoot = destRoot,
sourceRoot = this.sourceRoot();
if(this.cfg.gulpDirOption) gulpRoot = path.join(destRoot,'gulp')
copyFiles.copyStyleFiles(this, destRoot, gulpRoot, sourceRoot, function(){
done();
});
},
install: function(){
if(this.exit) return;
if(!this.calledFrom) {
var done = this.async();
installDep(this);
done();
}
}
});