Creating "gem install" commands from a given "gem list" output
#!/usr/bin/node
var sys = require('sys')
var exec = require('child_process').exec;
var child;
function getGemInfo(stdout){
var lines = stdout.split("\n");
var line, version, name, d, gem;
for(var i in lines){
line = lines[i];
if(line){
gem = {};
d = line.indexOf("(");
gem.name = line.substring(0,d).replace(" ","").replace("\n","");
gem.versions = getVersions(line.substring(d+1).replace(")",""))
console.log(createGemCommand(gem));
}
}
}
function getVersions(part){
var versions = part.split(",");
for(var i in versions){
versions[i] = versions[i].replace(" ","").replace("\n","");
}
return versions;
}
function createGemCommand(gem){
var base = "gem install";
var out = "";
for(var i in gem.versions){
out += base+" "+gem.name+" -v="+gem.versions[i]+"\n";
}
return out;
}
child = exec("gem list", function (error, stdout, stderr) {
if (error !== null) {
console.log('exec error: ' + error);
} else {
getGemInfo(stdout);
}
});
Written by Philipp Haußleiter
Related protips
Have a fresh tip? Share with Coderwall community!
Post
Post a tip
Best
#Ruby
Authors
Filed Under
Sponsored by #native_company# — Learn More
#native_title#
#native_desc#