@tracker1/config-merge
Version:
Deep merge configuration .yml in directory trees into output file.
52 lines (39 loc) • 1.31 kB
JavaScript
const minimist = require('minimist');
const { isDirectory } = require('./util');
const configMerge = require('./index');
const helpText = '\nUsage:\n config-merge inputDirectory outputDirectory\n';
const checkDir = async ([name, path]) => {
if (!(await isDirectory(path))) {
return `${name} '${path}' is not a directory.`;
}
};
const checkDirs = async dirs => {
const errors = (await Promise.all(Object.entries(dirs).map(checkDir))).filter(r => r);
if (errors.length) {
throw { message: `\n${errors.join('\n')}\n${helpText}` };
return true;
}
return false;
};
async function main(skip, processArgs) {
if (skip) return;
const argv = minimist(processArgs.slice(2));
switch (true) {
case argv.help:
case argv['?']:
case argv._.length != 2:
console.log(helpText);
return;
}
const [inputDirectory, outputDirectory] = argv._;
if (await checkDirs({ inputDirectory, outputDirectory })) return;
console.log(`PROCESSING: ${inputDirectory} ${outputDirectory}`);
const config = await configMerge(inputDirectory, outputDirectory);
// console.log(config);
}
module.exports = { main, checkDir, checkDirs, helpText };
main(!!module.parent, process.argv).catch(err => {
console.error(err.message);
process.exit(1);
});