Compare commits

...

8 Commits

Author SHA1 Message Date
Dave Conway-Jones
c256e27a83 simplistic detect can't write settings and set readOnly flag 2018-04-06 17:00:34 +01:00
Dave Conway-Jones
3f41036919 add node-red to project with minor server tolerance. 2018-04-06 16:46:54 +01:00
Dave Conway-Jones
95753ce5cd add "add node-red core" button to dependencies panel 2018-04-06 15:32:53 +01:00
Dave Conway-Jones
1906818c87 much simpler to always add start
whether node-red is s deep or not…  as if not it would need to be there
anyway….
2018-04-06 09:06:35 +01:00
Dave Conway-Jones
02765f8aad run by calling node-red script
handles npm start better after both clone and npm pack
2018-04-05 23:24:22 +01:00
Dave Conway-Jones
89f1dedf20 Add .config.json to .gitignore 2018-04-05 23:21:28 +01:00
Dave Conway-Jones
7a8906535e add --credentialSecret -k to command-line options 2018-04-05 14:48:47 +01:00
Dave Conway-Jones
499d22daca Add start script to default project package 2018-04-05 11:30:16 +01:00
5 changed files with 44 additions and 8 deletions

View File

@@ -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
View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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" ;}
}

View File

@@ -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);