64 lines
1.4 KiB
JavaScript
Raw Normal View History

2016-03-18 11:12:50 +01:00
'use strict';
/**
* Module dependencies
*/
// Public node modules.
const reportback = require('reportback')();
// Local dependencies.
const generate = require('./generate');
// Logger.
const logger = require('strapi-utils').logger;
/**
* Generate module(s)
*
* @param {Object} scope
* @param {Function} cb
*
* @return {[Type]}
*/
module.exports = (scope, cb) => {
2016-03-18 11:12:50 +01:00
cb = cb || {};
cb = reportback.extend(cb, {
error: cb.error,
success: () => {},
notStrapiApp: () => {},
alreadyExists: () => {
2016-03-18 11:12:50 +01:00
return cb.error();
}
});
// Use configured module name for this `generatorType` if applicable.
const module = 'strapi-generate-' + scope.generatorType;
let generator;
let requireError;
function throwIfModuleNotFoundError(error, module) {
const isModuleNotFoundError = error && error.code === 'MODULE_NOT_FOUND' && error.message.match(new RegExp(module));
if (!isModuleNotFoundError) {
logger.error('Invalid `' + scope.generatorType + '` generator.');
throw error;
} else {
return error;
}
}
// Try to require the module or throw if error.
try {
generator = require('../../' + module);
} catch (error) {
requireError = throwIfModuleNotFoundError(error, module);
}
if (!generator) {
return logger.error('No generator called `' + scope.generatorType + '` found.');
}
generate(generator, scope, cb);
};