diff --git a/tooling/generate.js b/tooling/generate.js index d88df11c44..49c84bc59f 100644 --- a/tooling/generate.js +++ b/tooling/generate.js @@ -36,6 +36,10 @@ Generate.generate = function generate(options) { options.generatorName = 'page'; } + if (!Generate.generators[options.generatorName]) { + throw new Error('There is no generator available with that name: ' + options.generatorName + '.'); + } + var generateOptions = { appDirectory: options.appDirectory, cssClassName: Generate.cssClassName(options.name), @@ -117,7 +121,8 @@ Generate.loadGenerators = function loadGenerators() { return; } var generatorName = file.replace('.js', ''); - generators[generatorName] = Generate.loadGenerator(generatorName); + var generator = Generate.loadGenerator(generatorName); + generators[generatorName] = generator; }); return generators; }; diff --git a/tooling/index.js b/tooling/index.js index f3a483486b..a4b85403c7 100644 --- a/tooling/index.js +++ b/tooling/index.js @@ -1,3 +1,5 @@ +var Generate = require('./generate'); module.exports = { - generate: require('./generate').generate + Generate: Generate, + generate: Generate.generate }; diff --git a/tooling/spec/generate.spec.js b/tooling/spec/generate.spec.js index 6f087c97f7..e376abd617 100644 --- a/tooling/spec/generate.spec.js +++ b/tooling/spec/generate.spec.js @@ -34,6 +34,13 @@ describe('#Generate', function() { expect(Generate.generate).toThrow('No options passed to generator'); }); + it('should throw an error trying to use a generator that does not exist', function() { + var generatorOptions = { appDirectory: '/fake/ionic/path', name: 'About', generatorName: 'tabz' }; + expect(function() { + Generate.generate(generatorOptions); + }).toThrow('There is no generator available with that name: tabz.'); + }); + it('should call the appropriate generator', function() { spyOn(Generate, 'createScaffoldDirectories'); var generatorOptions = { appDirectory: '/fake/ionic/path', name: 'About', generatorName: 'page' };