mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Compare commits
8 Commits
auto-layou
...
runnable-p
Author | SHA1 | Date | |
---|---|---|---|
|
c256e27a83 | ||
|
3f41036919 | ||
|
95753ce5cd | ||
|
1906818c87 | ||
|
02765f8aad | ||
|
89f1dedf20 | ||
|
7a8906535e | ||
|
499d22daca |
@@ -352,6 +352,7 @@ RED.projects.settings = (function() {
|
||||
}
|
||||
},{dependencies:dependencies});
|
||||
}
|
||||
|
||||
function editDependencies(activeProject,depsJSON,container,depsList) {
|
||||
var json = depsJSON||JSON.stringify(activeProject.dependencies||{},"",4);
|
||||
if (json === "{}") {
|
||||
@@ -380,6 +381,7 @@ RED.projects.settings = (function() {
|
||||
|
||||
function createDependenciesPane(activeProject) {
|
||||
var pane = $('<div id="project-settings-tab-deps" class="project-settings-tab-pane node-help"></div>');
|
||||
var nrDepButton;
|
||||
if (RED.user.hasPermission("projects.write")) {
|
||||
$('<button class="editor-button editor-button-small" style="margin-top:10px;float: right;">edit</button>')
|
||||
.appendTo(pane)
|
||||
@@ -387,6 +389,16 @@ RED.projects.settings = (function() {
|
||||
evt.preventDefault();
|
||||
editDependencies(activeProject,null,pane,depsList)
|
||||
});
|
||||
|
||||
nrDepButton = $('<button class="editor-button editor-button-small" style="margin-top:10px;">add Node-RED core</button>')
|
||||
.appendTo(pane)
|
||||
.click(function(evt) {
|
||||
evt.preventDefault();
|
||||
activeProject.dependencies["node-red"] = "~"+RED.settings.version;
|
||||
updateProjectDependencies(activeProject,depsList);
|
||||
$(this).hide();
|
||||
});
|
||||
if (activeProject.dependencies.hasOwnProperty("node-red")) { nrDepButton.hide(); }
|
||||
}
|
||||
var depsList = $("<ol>",{style:"position: absolute;top: 60px;bottom: 20px;left: 20px;right: 20px;"}).appendTo(pane);
|
||||
depsList.editableList({
|
||||
@@ -473,6 +485,7 @@ RED.projects.settings = (function() {
|
||||
evt.preventDefault();
|
||||
var deps = $.extend(true, {}, activeProject.dependencies);
|
||||
delete deps[entry.id];
|
||||
if (entry.id === "node-red") { nrDepButton.show(); }
|
||||
saveDependencies(depsList,row,deps,function(err) {
|
||||
if (!err) {
|
||||
row.fadeOut(200,function() {
|
||||
@@ -519,7 +532,6 @@ RED.projects.settings = (function() {
|
||||
|
||||
updateProjectDependencies(activeProject,depsList);
|
||||
return pane;
|
||||
|
||||
}
|
||||
|
||||
function showProjectFileListing(row,activeProject,current,filter,done) {
|
||||
|
26
red.js
26
red.js
@@ -31,8 +31,10 @@ var app = express();
|
||||
|
||||
var settingsFile;
|
||||
var flowFile;
|
||||
var readonly;
|
||||
|
||||
var knownOpts = {
|
||||
"credentialSecret": String,
|
||||
"help": Boolean,
|
||||
"port": Number,
|
||||
"settings": [path],
|
||||
@@ -41,6 +43,7 @@ var knownOpts = {
|
||||
"verbose": Boolean
|
||||
};
|
||||
var shortHands = {
|
||||
"k":["--credentialSecret"],
|
||||
"?":["--help"],
|
||||
"p":["--port"],
|
||||
"s":["--settings"],
|
||||
@@ -59,9 +62,11 @@ var parsedArgs = nopt(knownOpts,shortHands,process.argv,2)
|
||||
if (parsedArgs.help) {
|
||||
console.log("Node-RED v"+RED.version());
|
||||
console.log("Usage: node-red [-v] [-?] [--settings settings.js] [--userDir DIR]");
|
||||
console.log(" [--port PORT] [--title TITLE] [flows.json]");
|
||||
console.log(" [--port PORT] [--credentialSecret SECRET_KEY]");
|
||||
console.log(" [--title TITLE] [flows.json]");
|
||||
console.log("");
|
||||
console.log("Options:");
|
||||
console.log(" -k, --credentialSecret SECRET_KEY key to unlock credentials file");
|
||||
console.log(" -p, --port PORT port to listen on");
|
||||
console.log(" -s, --settings FILE use specified settings file");
|
||||
console.log(" --title TITLE process window title");
|
||||
@@ -101,8 +106,15 @@ if (parsedArgs.settings) {
|
||||
var settingsStat = fs.statSync(defaultSettings);
|
||||
if (settingsStat.mtime.getTime() <= settingsStat.ctime.getTime()) {
|
||||
// Default settings file has not been modified - safe to copy
|
||||
fs.copySync(defaultSettings,userSettingsFile);
|
||||
settingsFile = userSettingsFile;
|
||||
try {
|
||||
fs.copySync(defaultSettings,userSettingsFile);
|
||||
settingsFile = userSettingsFile;
|
||||
}
|
||||
catch (err) {
|
||||
console.log("Can't copy settings file.");
|
||||
settingsFile = defaultSettings;
|
||||
readonly = true;
|
||||
}
|
||||
} else {
|
||||
// Use default settings.js as it has been modified
|
||||
settingsFile = defaultSettings;
|
||||
@@ -114,6 +126,10 @@ if (parsedArgs.settings) {
|
||||
try {
|
||||
var settings = require(settingsFile);
|
||||
settings.settingsFile = settingsFile;
|
||||
if (readonly === true) {
|
||||
console.log("Setting to read Only mode.");
|
||||
settings.readOnly = true;
|
||||
}
|
||||
} catch(err) {
|
||||
console.log("Error loading settings file: "+settingsFile)
|
||||
if (err.code == 'MODULE_NOT_FOUND') {
|
||||
@@ -126,6 +142,10 @@ try {
|
||||
process.exit();
|
||||
}
|
||||
|
||||
if (parsedArgs.credentialSecret) {
|
||||
settings.credentialSecret = parsedArgs.credentialSecret;
|
||||
}
|
||||
|
||||
if (parsedArgs.verbose) {
|
||||
settings.verbose = true;
|
||||
}
|
||||
|
@@ -276,10 +276,12 @@ Project.prototype.update = function (user, data) {
|
||||
saveREADME = true;
|
||||
this.description = data.description;
|
||||
}
|
||||
|
||||
if (data.hasOwnProperty('dependencies')) {
|
||||
savePackage = true;
|
||||
this.package.dependencies = data.dependencies;
|
||||
}
|
||||
|
||||
if (data.hasOwnProperty('summary')) {
|
||||
savePackage = true;
|
||||
this.package.description = data.summary;
|
||||
@@ -332,6 +334,7 @@ Project.prototype.update = function (user, data) {
|
||||
if (data.files.hasOwnProperty('flow') && this.package['node-red'].settings.flowFile !== data.files.flow) {
|
||||
this.paths.flowFile = data.files.flow;
|
||||
this.package['node-red'].settings.flowFile = data.files.flow;
|
||||
this.package.scripts = {"start":"node-red -u . " + data.files.flow};
|
||||
savePackage = true;
|
||||
flowFilesChanged = true;
|
||||
}
|
||||
|
@@ -24,7 +24,8 @@ module.exports = {
|
||||
"node-red": {
|
||||
"settings": {
|
||||
}
|
||||
}
|
||||
},
|
||||
"scripts": {}
|
||||
};
|
||||
if (project.files) {
|
||||
if (project.files.flow) {
|
||||
@@ -43,5 +44,5 @@ module.exports = {
|
||||
|
||||
return content;
|
||||
},
|
||||
".gitignore": function() { return "*.backup" ;}
|
||||
".gitignore": function() { return "*.backup\n.config.json\n" ;}
|
||||
}
|
||||
|
@@ -81,8 +81,8 @@ module.exports = {
|
||||
writeFile: function(path,content,backupPath) {
|
||||
if (backupPath) {
|
||||
try {
|
||||
console.log(path);
|
||||
console.log(backupPath);
|
||||
// console.log(path);
|
||||
// console.log(backupPath);
|
||||
fs.renameSync(path,backupPath);
|
||||
} catch(err) {
|
||||
console.log(err);
|
||||
|
Reference in New Issue
Block a user