node-rigorous
Version:
Rigorous Framework
54 lines (38 loc) • 1.6 kB
JavaScript
/**
* Autoriser le require dynamique
* Impact -> https://github.com/benmosher/eslint-plugin-import/blob/master/docs/rules/no-dynamic-require.md
*/
/* eslint global-require: 0 */ // --> OFF
/* eslint import/no-dynamic-require: 0 */ // --> OFF
const fs = require('fs');
function getFileName(file) {
return file.substr(0, file.indexOf('.'));
}
function isAttributeFile(name) {
return (name !== '' && name.indexOf('.js') > -1 && name.indexOf('_v.js') === -1);
}
function isVirtualFile(name) {
return (name !== '' && name.indexOf('_v.js') > -1);
}
module.exports = (attributeModelFolderPath) => {
const attributesSchema = {};
const virtuals = {};
fs.readdirSync(attributeModelFolderPath).forEach((file) => {
try {
// Order matter because virtual file detect has more restricted rules
if (isVirtualFile(file)) {
const fileName = getFileName(file);
const virtualObject = require(`${attributeModelFolderPath}/${fileName}`).default;
virtuals[virtualObject.virtualName] = virtualObject;
} else if (isAttributeFile(file)) {
const fileName = getFileName(file);
const attributeObject = require(`${attributeModelFolderPath}/${fileName}`).default;
attributesSchema[fileName] = attributeObject;
}
} catch (err) {
console.log(`Attribute ${file} failed to load: ${err.toString()}`);
throw err;
}
});
return { attributesSchema: attributesSchema, virtuals: virtuals };
};