UNPKG

1.18 kBJavaScriptView Raw
1const fs = require('fs');
2const path = require('path');
3const findDominantFile = require('find-dominant-file');
4const each = require('lodash/each');
5const kebabCase = require('lodash/kebabCase');
6const chalk = require('chalk');
7
8const updateRcFile = (app, undefaultOptions, wd) => {
9 if (!app.rcFile) return;
10 let filename = findDominantFile(wd, app.rcFile);
11 if (!filename) {
12 filename = path.join(wd, app.rcFile);
13 }
14 let content;
15 if (fs.existsSync(filename)) {
16 content = JSON.parse(fs.readFileSync(filename).toString());
17 } else {
18 content = {};
19 }
20 each(undefaultOptions, (value, name) => {
21 if (value === '__delete__') {
22 console.log(`${chalk.green('config'.padStart(12))} delete '${name}'`);
23 delete content[name];
24 } else {
25 if (content[name] !== undefined) {
26 console.log(`${chalk.green('config'.padStart(12))} overwrite \
27'--${kebabCase(name)}=${value}'`);
28 } else {
29 console.log(`${chalk.green('config'.padStart(12))} add \
30'--${kebabCase(name)}=${value}'`);
31
32 }
33 content[name] = value;
34 }
35 });
36 fs.writeFileSync(filename, JSON.stringify(content, null, 2));
37};
38
39module.exports = updateRcFile;