mirror of
				https://github.com/node-red/node-red.git
				synced 2025-03-01 10:36:34 +00:00 
			
		
		
		
	add option support for overwriting settiings.js
This commit is contained in:
		
							
								
								
									
										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;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user