Criação de comandos de “instalação de gem” a partir de uma determinada saída de “lista de gem”

#!/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);
}
});