mirror of
https://github.com/strapi/strapi.git
synced 2025-07-23 09:00:19 +00:00
64 lines
1.4 KiB
JavaScript
64 lines
1.4 KiB
JavaScript
![]() |
'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 = function (scope, cb) {
|
||
|
cb = cb || {};
|
||
|
cb = reportback.extend(cb, {
|
||
|
error: cb.error,
|
||
|
success: function () {},
|
||
|
notStrapiApp: function () {},
|
||
|
alreadyExists: function () {
|
||
|
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);
|
||
|
};
|