atlas-guide
Version:
Atlas is living style-guides & pattern library static site generator with extensive CSS monitoring and components info that could be used virtually with any scss/css project
68 lines (60 loc) • 2.58 kB
JavaScript
;
const fs = require('fs');
const path = require('path');
const projectRoot = process.cwd();
const printMessage = require('../utils/printmessage');
const absPath = relPath => path.join(projectRoot, relPath, '/');
const isPathReachable = (destination, name) => {
if (!destination) {
printMessage('error', '"' + name + '" not defined. This field is mandatory');
return false;
} else if (!fs.existsSync(absPath(destination))) {
printMessage('error', '"' + name + '" (' + destination + ') in config unavailable or unreadable. ' +
'Please check this path in config');
return false;
} else {
return true;
}
};
function getMandatoryBaseConfig(config) {
if (!isPathReachable(config.guideSrc, 'guideSrc') ||
!isPathReachable(config.cssSrc, 'cssSrc')) {
return { isCorrupted: true }; // return with corrupted config if we don't have critical info
}
let atlasConfig = {};
// Process mandatory configs
atlasConfig.guideSrc = absPath(config.guideSrc);
atlasConfig.cssSrc = absPath(config.cssSrc);
// Check if scssSrc defined as alternative for documentation root
if (config.scssSrc === undefined) {
atlasConfig.scssSrc = atlasConfig.guideSrc;
} else {
const scssSrc = absPath(config.scssSrc);
if (!fs.existsSync(scssSrc)) {
atlasConfig.scssSrc = atlasConfig.guideSrc;
printMessage('warn', '"scssSrc" is defined, but directory (' + config.scssSrc + ') unavailable or ' +
'unreadable. "cssSrc" directory used as fallback');
} else {
atlasConfig.scssSrc = scssSrc;
}
}
// Check and create destination directory if needed
const createDestination = config.createDestFolder || false;
if (!config.guideDest) {
printMessage('error', '"guideDest" not defined. This field is mandatory');
return { isCorrupted: true };
}
if (!fs.existsSync(absPath(config.guideDest))) {
if (createDestination) {
fs.mkdirSync(path.join(projectRoot, config.guideDest));
printMessage('warn', '"guideDest": ' + config.guideDest + ' directory created');
} else {
printMessage('error', '"guideDest" (' + config.guideDest + ') in config unavailable or unreadable. ' +
'Please check this path in config');
return { isCorrupted: true };
}
}
atlasConfig.guideDest = absPath(config.guideDest);
return atlasConfig;
}
module.exports = getMandatoryBaseConfig;