68 lines
1.5 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.
2021-04-29 13:51:12 +02:00
const logger = require('@strapi/utils').logger;
2016-03-18 11:12:50 +01:00
2018-05-04 17:36:50 +02:00
// Local dependencies.
const generate = require('./generate');
const generateTarget = require('./target');
2018-05-04 17:36:50 +02:00
/* 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();
},
2016-03-18 11:12:50 +01:00
});
// Use configured module name for this `generatorType` if applicable.
2021-04-29 13:51:12 +02:00
const module = '@strapi/generate-' + scope.generatorType;
2016-03-18 11:12:50 +01:00
let generator;
function throwIfModuleNotFoundError(error, module) {
const isModuleNotFoundError =
2021-04-29 11:11:46 +02:00
error && error.code === 'MODULE_NOT_FOUND' && error.message.match(new RegExp(module));
2016-03-18 11:12:50 +01:00
if (!isModuleNotFoundError) {
logger.error('Invalid `' + scope.generatorType + '` generator.');
throw error;
} else {
return error;
}
}
// Try to require the module or throw if error.
try {
2021-04-29 15:40:35 +02:00
generator = require(module);
2016-03-18 11:12:50 +01:00
} catch (error) {
2017-01-04 18:28:47 +01:00
throwIfModuleNotFoundError(error, module);
2016-03-18 11:12:50 +01:00
}
if (!generator) {
2021-04-29 11:11:46 +02:00
return logger.error('No generator called `' + scope.generatorType + '` found.');
2016-03-18 11:12:50 +01:00
}
generate(generator, scope, cb);
};
module.exports.generateTarget = generateTarget;