Removed CLI from repo

This commit is contained in:
Anna Thomas 2014-11-28 09:21:39 +00:00
parent e28f933f64
commit 35b3912808
6 changed files with 0 additions and 369 deletions

View File

@ -1,53 +0,0 @@
/**
* 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 = {
unload: function() {
config = null;
}
};
module.exports.__defineGetter__('target',function() { load(); return config.target|| "http://localhost:1880" });
module.exports.__defineSetter__('target',function(v) { load(); config.target = v; save();});

View File

@ -1,51 +0,0 @@
/**
* 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;
// Pull out the request function so we can stub it in the tests
var requestFunc = request.get;
if (options.method == 'PUT') {
requestFunc = request.put;
} else if (options.method == 'POST') {
requestFunc = request.post;
} else if (options.method == 'DELETE') {
requestFunc = request.del;
}
requestFunc(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)
}
});
});
}

View File

@ -1,151 +0,0 @@
#!/usr/bin/env node
;(function() {
/**
* 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 util = require("util");
var request = require("request");
var colors = require('colors');
var apiRequest = require("./lib/request");
var config = require("./lib/config");
var commands = {
"target": function() {
var target = process.argv[3];
if (target) {
if (!/^https?:\/\/.+/.test(target)) {
console.warn("Invalid target url");
return;
}
if (target.slice(-1) == "/") {
target = target.slice(0,target.length-1);
}
var oldTarget = config.target;
config.target = target;
} else {
console.log("Target: ".yellow+config.target);
}
},
"nodes": function() {
apiRequest('/nodes',{}).then(logNodeList).otherwise(logFailure);
},
"node": function() {
apiRequest('/nodes/'+process.argv[3],{}).then(logNodeList).otherwise(logFailure);
},
"enable-node": function() {
apiRequest('/nodes/'+process.argv[3],{
method: "PUT",
body: JSON.stringify({enabled:true})
}).then(logNodeList).otherwise(logFailure);
},
"disable-node": function() {
apiRequest('/nodes/'+process.argv[3],{
method: "PUT",
body: JSON.stringify({enabled:false})
}).then(logNodeList).otherwise(logFailure);
},
"install": function() {
apiRequest('/nodes',{
method: "POST",
body: JSON.stringify({module:process.argv[3]})
}).then(logNodeList).otherwise(logFailure);
},
"remove": function() {
apiRequest('/nodes/'+process.argv[3],{
method: "DELETE"
}).then(logNodeList).otherwise(logFailure);
},
"search": function() {
var options = {
method: "GET",
url: 'https://registry.npmjs.org/-/_view/byKeyword?startkey=["node-red"]&endkey=["node-red",{}]&group_level=3' ,
headers: {
'Accept': 'application/json',
}
};
request(options, function (error, response, body) {
if (!error && response.statusCode == 200) {
var info = (JSON.parse(body)).rows;
var filter = null;
if (process.argv[3]) {
filter = new RegExp(process.argv[3]);
}
for (var i=0;i<info.length;i++) {
var n = info[i];
if (!filter || filter.test(n.key[1]) || filter.test(n.key[2])) {
console.log(n.key[1] + (" - "+ n.key[2]).grey);
}
}
} else if (error) {
console.log(error.toString().red);
} else {
console.log((response.statusCode+": "+body).red);
}
});
}
}
function logNodeList(nodes) {
if (!util.isArray(nodes)) {
nodes = [nodes];
}
for (var i=0;i<nodes.length;i++) {
var n = nodes[i];
console.log(formatNodeInfo(n))
}
}
function logFailure(msg) {
console.log(msg.red);
}
function formatBoolean(v,c) {
if (v) {
return ("["+c+"]");
} else {
return ("[ ]");
}
}
function formatNodeInfo(n) {
var inError = n.hasOwnProperty("err");
var str = formatBoolean(n.enabled,"X")+formatBoolean(n.loaded,"L")+" ";
str += n.id;
if (n.enabled && n.loaded) {
str = str.green;
} else if (n.enabled && n.err) {
str = str.red;
} else {
str = str.yellow;
}
if (n.module) {
str += " ["+n.module+"]";
}
str += " "+n.types.join(", ");
if (n.err) {
str+=" "+n.err.red;
}
return str;
}
if (commands[process.argv[2]]) {
commands[process.argv[2]].call();
}
})();

View File

@ -1,53 +0,0 @@
/**
* 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 should = require("should");
var sinon = require("sinon");
var fs = require("fs");
var config = require("../../../../red/cli/lib/config");
describe("cli config", function() {
afterEach(function() {
config.unload();
});
it('loads preferences when target referenced', sinon.test(function() {
this.stub(fs,"readFileSync",function() {
return '{"target":"http://example.com:1880"}'
});
config.target.should.eql("http://example.com:1880");
}));
it('provide default value for target', sinon.test(function() {
this.stub(fs,"readFileSync",function() {
return '{}'
});
config.target.should.eql("http://localhost:1880");
}));
it('saves preferences when target set', sinon.test(function() {
this.stub(fs,"readFileSync",function() {
return '{"target":"http://another.example.com:1880"}'
});
this.stub(fs,"writeFileSync",function() {});
config.target.should.eql("http://another.example.com:1880");
config.target = "http://final.example.com:1880";
fs.readFileSync.calledOnce.should.be.true;
fs.writeFileSync.calledOnce.should.be.true;
}));
});

View File

@ -1,46 +0,0 @@
/**
* 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 should = require("should");
var sinon = require("sinon");
var fs = require("fs");
var request = require("request");
var apiRequest = require("../../../../red/cli/lib/request");
var config = require("../../../../red/cli/lib/config");
describe("cli request", function() {
var sandbox = sinon.sandbox.create();
before(function() {
sandbox.stub(fs,"readFileSync",function() {
return '{"target":"http://example.com:1880"}'
});
});
after(function() {
sandbox.restore();
});
it('returns the json response to a get', sinon.test(function(done) {
this.stub(request, 'get').yields(null, {statusCode:200}, JSON.stringify({a: "b"}));
apiRequest("/foo",{}).then(function(res) {
res.should.eql({a:"b"});
done();
}).otherwise(function(err) {
done(err);
});
}));
});

View File

@ -1,15 +0,0 @@
/**
* 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.
**/