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')();
// Logger.
const logger = require('strapi-utils').logger;
2018-05-04 17:36:50 +02:00
// Local dependencies.
const generate = require('./generate');
/* eslint-disable prefer-template */
2016-03-18 11:12:50 +01:00
/**
* 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;
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) {
2017-01-04 18:28:47 +01:00
throwIfModuleNotFoundError(error, module);
2016-03-18 11:12:50 +01:00
}
if (!generator) {
return logger.error('No generator called `' + scope.generatorType + '` found.');
}
generate(generator, scope, cb);
};