conf-edit
Version:
Quickly and easily change .conf properties file
76 lines (68 loc) • 2.21 kB
JavaScript
const arg = require("arg");
const {getSettings, setSettings} = require('../src/index');
const {writeFileSync} = require("fs");
function convertArgsToOptions(receivedArgs) {
const args = arg({
'--property': [String],
'--extend': Boolean,
"--ignoreCase": Boolean,
"--dest": String,
"--ignorecase": "--ignoreCase",
'-p': '--property',
'-e': '--extend',
'-i': '--ignoreCase',
'-d': '--dest'
},
{
argv: receivedArgs.slice(2)
})
let result = {
ignoreCase: args['--ignoreCase'],
extend: args['--extend'],
properties: args['--property'],
dest: args['--dest']
}
const functions = ["getsettings", "setsettings", "get", "set"];
args._.forEach(x => {
if (functions.includes(x.toLowerCase())) {
result.func = x.toLowerCase();
} else result.file = x;
})
if (args.dest == void 0) args.dest = args.file;
return result;
}
function convertToString(obj) {
if (obj == void 0) return null;
if (typeof obj === 'string') return obj;
try {
return JSON.stringify(obj);
} catch (error) {
}
return null;
}
function cli(args) {
var a = convertArgsToOptions(args);
if (a.func == void 0) {
console.log("no proper function has been set. Options are getSettings, setSettings.");
return;
}
switch (a.func) {
case "get":
case "getsettings":
var settings = getSettings(a.file, a.properties, a.extend, a.ignoreCase);
var settingsString = convertToString(settings);
if (settingsString == void 0) return null;
if (a.dest == void 0) return console.log(settingsString);
writeFileSync(a.dest, settingsString);
break;
default:
// set setsettings
var newSettings = setSettings(a.file, a.properties, a.extend, a.ignoreCase);
if (a.dest == void 0) return console.log(newSettings);
writeFileSync(a.dest, newSettings);
break;
}
}
module.exports = {
cli
};