mirror of
https://github.com/node-red/node-red.git
synced 2023-10-10 13:36:53 +02:00
add option support for overwriting settiings.js
This commit is contained in:
parent
4f9395e881
commit
c0d007ffa9
56
packages/node_modules/node-red/red.js
vendored
56
packages/node_modules/node-red/red.js
vendored
@ -39,7 +39,8 @@ var knownOpts = {
|
|||||||
"title": String,
|
"title": String,
|
||||||
"userDir": [path],
|
"userDir": [path],
|
||||||
"verbose": Boolean,
|
"verbose": Boolean,
|
||||||
"safe": Boolean
|
"safe": Boolean,
|
||||||
|
"define": [String, Array]
|
||||||
};
|
};
|
||||||
var shortHands = {
|
var shortHands = {
|
||||||
"?":["--help"],
|
"?":["--help"],
|
||||||
@ -49,7 +50,8 @@ var shortHands = {
|
|||||||
// doesn't get treated as --title
|
// doesn't get treated as --title
|
||||||
"t":["--help"],
|
"t":["--help"],
|
||||||
"u":["--userDir"],
|
"u":["--userDir"],
|
||||||
"v":["--verbose"]
|
"v":["--verbose"],
|
||||||
|
"D":["--define"]
|
||||||
};
|
};
|
||||||
nopt.invalidHandler = function(k,v,t) {
|
nopt.invalidHandler = function(k,v,t) {
|
||||||
// TODO: console.log(k,v,t);
|
// TODO: console.log(k,v,t);
|
||||||
@ -57,6 +59,28 @@ nopt.invalidHandler = function(k,v,t) {
|
|||||||
|
|
||||||
var parsedArgs = nopt(knownOpts,shortHands,process.argv,2)
|
var parsedArgs = nopt(knownOpts,shortHands,process.argv,2)
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Set property of specified object.
|
||||||
|
* @param {Object} obj - target object
|
||||||
|
* @param {string} path - "." separated property path
|
||||||
|
* @param {Object} val - value to be set
|
||||||
|
*/
|
||||||
|
function setProperty(obj, path, val) {
|
||||||
|
var paths = path.split(".");
|
||||||
|
if (paths.length > 0) {
|
||||||
|
var o = obj;
|
||||||
|
for (var i = 0; i < paths.length -1; i++) {
|
||||||
|
var path = paths[i];
|
||||||
|
if (!o.hasOwnProperty(path)) {
|
||||||
|
o[path] = {};
|
||||||
|
}
|
||||||
|
o = o[path];
|
||||||
|
}
|
||||||
|
var key = paths[paths.length-1];
|
||||||
|
o[key] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (parsedArgs.help) {
|
if (parsedArgs.help) {
|
||||||
console.log("Node-RED v"+RED.version());
|
console.log("Node-RED v"+RED.version());
|
||||||
console.log("Usage: node-red [-v] [-?] [--settings settings.js] [--userDir DIR]");
|
console.log("Usage: node-red [-v] [-?] [--settings settings.js] [--userDir DIR]");
|
||||||
@ -69,6 +93,7 @@ if (parsedArgs.help) {
|
|||||||
console.log(" -u, --userDir DIR use specified user directory");
|
console.log(" -u, --userDir DIR use specified user directory");
|
||||||
console.log(" -v, --verbose enable verbose output");
|
console.log(" -v, --verbose enable verbose output");
|
||||||
console.log(" --safe enable safe mode");
|
console.log(" --safe enable safe mode");
|
||||||
|
console.log(" -D, --define X=Y overwrite value in settings file");
|
||||||
console.log(" -?, --help show this help");
|
console.log(" -?, --help show this help");
|
||||||
console.log("");
|
console.log("");
|
||||||
console.log("Documentation can be found at http://nodered.org");
|
console.log("Documentation can be found at http://nodered.org");
|
||||||
@ -130,6 +155,33 @@ try {
|
|||||||
process.exit();
|
process.exit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (parsedArgs.define) {
|
||||||
|
var defs = parsedArgs.define;
|
||||||
|
defs.forEach(function (def) {
|
||||||
|
try {
|
||||||
|
var match = /^(([^=]+)=(.+)|@(.*))$/.exec(def);
|
||||||
|
if (match) {
|
||||||
|
if (!match[4]) {
|
||||||
|
var val = JSON.parse(match[3]);
|
||||||
|
setProperty(settings, match[2], val);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var obj = fs.readJsonSync(match[4]);
|
||||||
|
Object.entries(obj).forEach(([key, val]) => {
|
||||||
|
settings[key] = val;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
throw new Error("Unexpected option: "+def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.log(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
if (parsedArgs.verbose) {
|
if (parsedArgs.verbose) {
|
||||||
settings.verbose = true;
|
settings.verbose = true;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user