@arminlinzbauer/gulpex
Version:
Extensible Gulp Wrapper for Easy Set-up and Project Integration (SASS + JS)
46 lines (40 loc) • 1.57 kB
JavaScript
const fs = require('fs');
function findExtensions(rootDir, config) {
try {
if (fs.existsSync(`${rootDir}/.gulp/extensions/autoload`)) {
let autoloadPaths = fs.readdirSync(`${rootDir}/.gulp/extensions/autoload`);
autoloadPaths = autoloadPaths.map(v => `autoload/${v}`);
return [...autoloadPaths, ...config.extensions];
}
return config.extensions;
} catch (e) {
return [];
}
}
function loadExtension(extensionFile, extensionName, rootDir, options) {
extensionFile = `${rootDir}/.gulp/extensions/${extensionFile}`;
if (extensionFile.substr(-3, 3).toLowerCase() === '.js') {
extensionFile = extensionFile.substr(0, extensionFile.length - 3);
}
try {
console.log(`[GulpEx] Loading extension '${extensionName}'`);
require(extensionFile).default({ ...options });
} catch (error) {
console.error(error);
console.error(`[GulpEx] Failed to load extension '${extensionName}'`);
}
};
function guardConfig(config, extensionName) {
function guardedConfig() {
if (
config.security.extensions.allowConfigAccess === true ||
Array.isArray(config.security.extensions.allowConfigAccess) &&
config.security.extensions.allowConfigAccess.includes(extensionName)
) {
return {...config};
}
console.error(`[${extensionName}] Config access for extensions disabled.`);
}
return guardedConfig;
}
module.exports = { findExtensions, loadExtension, guardConfig }