mirror of
https://github.com/node-red/node-red.git
synced 2025-03-01 10:36:34 +00:00
Rework nr-cli
- better componentisation - add 'search' option to look for npm modules - add 'target' option to point at non-default installs
This commit is contained in:
49
red/cli/lib/config.js
Normal file
49
red/cli/lib/config.js
Normal file
@@ -0,0 +1,49 @@
|
||||
/**
|
||||
* Copyright 2014 IBM Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var path = require("path");
|
||||
var fs = require("fs");
|
||||
|
||||
var userHome = process.env.HOME || process.env.HOMEPATH || process.env.USERPROFILE;
|
||||
|
||||
var configDir = path.join(userHome,".nodered");
|
||||
var configFile = path.join(configDir,"config.json");
|
||||
|
||||
var config;
|
||||
|
||||
function load() {
|
||||
if (config == null) {
|
||||
try {
|
||||
config = JSON.parse(fs.readFileSync(configFile));
|
||||
} catch(err) {
|
||||
config = {};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function save() {
|
||||
try {
|
||||
fs.mkdirSync(configDir);
|
||||
} catch(err) {
|
||||
if (err.code != "EEXIST") {
|
||||
throw err;
|
||||
}
|
||||
}
|
||||
fs.writeFileSync(configFile,JSON.stringify(config,null,4));
|
||||
}
|
||||
module.exports = {};
|
||||
module.exports.__defineGetter__('target',function() { load(); return config.target|| "http://localhost:1880" });
|
||||
module.exports.__defineSetter__('target',function(v) { load(); config.target = v; save();});
|
40
red/cli/lib/request.js
Normal file
40
red/cli/lib/request.js
Normal file
@@ -0,0 +1,40 @@
|
||||
/**
|
||||
* Copyright 2014 IBM Corp.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
**/
|
||||
|
||||
var when = require("when");
|
||||
var request = require("request");
|
||||
var config = require("./config");
|
||||
|
||||
module.exports = function(path, options) {
|
||||
var basePath = config.target;
|
||||
return when.promise(function(resolve,reject) {
|
||||
options.headers = options.headers||{};
|
||||
options.headers['Accept'] = 'application/json';
|
||||
if (options.method == 'PUT' || options.method == "POST") {
|
||||
options.headers['content-type'] = 'application/json';
|
||||
}
|
||||
options.url = basePath+path;
|
||||
request(options, function(error,response,body) {
|
||||
if (!error && response.statusCode == 200) {
|
||||
resolve(JSON.parse(body));
|
||||
} else if (error) {
|
||||
reject(error.toString());
|
||||
} else {
|
||||
reject(response.statusCode+": "+body)
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
Reference in New Issue
Block a user