diff --git a/README.md b/README.md index bd02e9b..69dd7e4 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,19 @@ usage information. -V, --version output the version number ``` +### generate silently +You can activate silent mode for the `ember generate` command. Just add a silent option to your `ember.json`. this file is located at your project root. + + { + "jsPath": "js", + "modules": "cjs", + "silent": true + } + +Though this is can be very useful when using integrated IDE command lines or Macro execution, be very careful as it will overwrite files with no warning! + +Keep in mind that autogenerated controllers will have `neither` option. + ## Guide ### Creating Stand-Alone Browser Apps diff --git a/src/commands/generate.js b/src/commands/generate.js index 5b30751..3ccfe6f 100644 --- a/src/commands/generate.js +++ b/src/commands/generate.js @@ -1,16 +1,19 @@ +var config = require('../util/config'); var generators = require('../generators/index'); var msg = require('../util/message'); var parseGeneratorCommand = require('../util/parseGeneratorCommand'); -module.exports = function() { - var env = parseGeneratorCommand([].slice.call(arguments, 0)); - if (!env.resourceName) { - msg.notify("Please provide a resource name. See 'ember generate --help'"); - } else { - for (var generator in generators) { - if (env[generator]) { - generators[generator](env.resourceName, env); - } +module.exports = function () { + var env = parseGeneratorCommand([].slice.call(arguments, 0)); + if (!env.resourceName) { + msg.notify("Please provide a resource name. See 'ember generate --help'"); + } else { + if (config().force) msg.forceMode(); + + for (var generator in generators) { + if (env[generator]) { + generators[generator](env.resourceName, env); + } + } } - } }; diff --git a/src/generators/component.js b/src/generators/component.js index e01e6ee..b28f296 100644 --- a/src/generators/component.js +++ b/src/generators/component.js @@ -1,16 +1,18 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); var msg = require('../util/message'); -module.exports = function(resource) { - var resourceName = inflector.dasherize(resource); - if (resourceName.indexOf('-') < 0) { - msg.error("Ember components must have at least one dash (-), ie:\n ember generate -p em-widget"); - } - resourceName = inflector.underscore(resource) + '_component'; - var templateName = 'components/' + inflector.dasherize(resource); - fs.writeGenerator('component', resourceName, { - objectName: inflector.objectify(resourceName), - }); - fs.writeComponentTemplate(templateName); +module.exports = function (resource) { + var resourceName = inflector.dasherize(resource); + if (resourceName.indexOf('-') < 0) { + msg.error("Ember components must have at least one dash (-), ie:\n ember generate -p em-widget"); + } + resourceName = inflector.underscore(resource) + '_component'; + var templateName = 'components/' + inflector.dasherize(resource); + fs.writeGenerator('component', resourceName, { + objectName: inflector.objectify(resourceName), + force: config().force + }); + fs.writeComponentTemplate(templateName,{force: config().force}); }; diff --git a/src/generators/controller.js b/src/generators/controller.js index 49a69ba..5e47bc0 100644 --- a/src/generators/controller.js +++ b/src/generators/controller.js @@ -1,3 +1,4 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); var msg = require('../util/message'); @@ -6,7 +7,8 @@ module.exports = function(resource) { var resourceName = inflector.underscore(resource)+'_controller'; fs.writeGenerator('controller', resourceName, { objectName: inflector.objectify(resourceName), - controllerType: promptControllerType() + controllerType: config().force?'':promptControllerType(), + force: config().force }); }; diff --git a/src/generators/mixin.js b/src/generators/mixin.js index 84d2525..511db77 100644 --- a/src/generators/mixin.js +++ b/src/generators/mixin.js @@ -1,11 +1,13 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); var msg = require('../util/message'); -module.exports = function(resource) { - var resourceName = inflector.underscore(inflector.singularize(resource)); - fs.writeGenerator('mixin', resourceName, { - objectName: inflector.objectify(resourceName) - }); +module.exports = function (resource) { + var resourceName = inflector.underscore(inflector.singularize(resource)); + fs.writeGenerator('mixin', resourceName, { + objectName: inflector.objectify(resourceName), + force: config().force + }); }; diff --git a/src/generators/model.js b/src/generators/model.js index 34e5ebd..327d531 100644 --- a/src/generators/model.js +++ b/src/generators/model.js @@ -1,11 +1,13 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); -module.exports = function(resource, env) { - var resourceName = inflector.underscore(inflector.singularize(resource)); - fs.writeGenerator('model', resourceName, { - fields: env.fields, - objectName: inflector.objectify(resourceName) - }); +module.exports = function (resource, env) { + var resourceName = inflector.underscore(inflector.singularize(resource)); + fs.writeGenerator('model', resourceName, { + fields: env.fields, + objectName: inflector.objectify(resourceName), + force: config().force + }); }; diff --git a/src/generators/route.js b/src/generators/route.js index e43f330..9a8c52e 100644 --- a/src/generators/route.js +++ b/src/generators/route.js @@ -1,10 +1,12 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); -module.exports = function(resource) { - var resourceName = inflector.underscore(resource) + '_route'; - fs.writeGenerator('route', resourceName, { - objectName: inflector.objectify(resourceName) - }); +module.exports = function (resource) { + var resourceName = inflector.underscore(resource) + '_route'; + fs.writeGenerator('route', resourceName, { + objectName: inflector.objectify(resourceName), + force: config().force + }); }; diff --git a/src/generators/template.js b/src/generators/template.js index 1239406..b4ce794 100644 --- a/src/generators/template.js +++ b/src/generators/template.js @@ -1,8 +1,9 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); module.exports = function(resource) { var resourceName = inflector.underscore(resource); - fs.writeGenerator('template', resourceName, {name: resource}); + fs.writeGenerator('template', resourceName, {name: resource, force: config().force}); }; diff --git a/src/generators/view.js b/src/generators/view.js index 9cd8528..5198d16 100644 --- a/src/generators/view.js +++ b/src/generators/view.js @@ -1,10 +1,12 @@ +var config = require('../util/config'); var fs = require('../util/fs'); var inflector = require('../util/inflector'); -module.exports = function(resource) { - var resourceName = inflector.underscore(resource) + '_view'; - fs.writeGenerator('view', resourceName, { - objectName: inflector.objectify(resourceName) - }); +module.exports = function (resource) { + var resourceName = inflector.underscore(resource) + '_view'; + fs.writeGenerator('view', resourceName, { + objectName: inflector.objectify(resourceName), + force: config().force + }); }; diff --git a/src/util/fs.js b/src/util/fs.js index 57ae0f6..5d182c0 100644 --- a/src/util/fs.js +++ b/src/util/fs.js @@ -39,7 +39,7 @@ fs.writeGenerator = function(generatorType, resourceName, locals) { var ext = (generatorType == 'template') ? '.hbs' : '.js'; var pluralType = inflector.pluralize(generatorType); var savePath = config().jsPath+'/'+pluralType+'/'+resourceName+ext; - fs.writeTemplate('generate', generatorType+ext, locals, savePath); + fs.writeTemplate('generate', generatorType+ext, locals, savePath,locals.force?'force':''); }; fs.writeComponentTemplate = function(resourceName, locals) { @@ -47,7 +47,7 @@ fs.writeComponentTemplate = function(resourceName, locals) { var savePath = config().jsPath+'/templates/'+templateName; var templatePath = __dirname+'/../templates/generate/component_template.hbs.hbs'; var src = fs.renderTemplate(templatePath, locals); - fs.writeFileSync(savePath, src); + fs.writeFileSync(savePath, src, locals.force?'force':''); }; fs.renderTemplate = function(templatePath, locals) { diff --git a/src/util/message.js b/src/util/message.js index c010b9f..128e214 100644 --- a/src/util/message.js +++ b/src/util/message.js @@ -43,3 +43,6 @@ exports.prompt = function(question) { return prompt().toLowerCase(); }; +exports.forceMode = function() { + console.log(yellow(" WARNING:\t") + "Silent mode is enabled\n"); +};