ipselector
Version:
IpSelector is a library to select a local IP address at the command line
52 lines (48 loc) • 1.36 kB
JavaScript
var os = require('os'),
fields = require('fields'),
_ = require('underscore');
exports.selectOne = function(where,callback){
if(!callback && _.isFunction(where)){
callback = where;
where = {};
}
var ifaces = os.networkInterfaces(),
ip_addresses = [];
var interfaceName = where.networkInterface;
delete where.networkInterface;
_.each(ifaces,function(iface,dev_name){
if(interfaceName && dev_name !== interfaceName){
return;
}
var results = _.where(iface,where);
_.each(results,function(details){
details.dev_name = dev_name;
});
ip_addresses = ip_addresses.concat(results);
});
fields.set([
fields.select({
title : "Which ip address you want to use?",
promptLabel: 'Select a ip_address by number', //or name
relistOnError : true,
complete : true,
suggest : true,
numbered : true,
optionValue : 'address',
autoSelectOne : true, // if have only one options, it will be autuselected.
formatters : {
option : function(opt, idx, num) {
return num + opt.address.cyan + ' ' + opt.family + '(' +opt.dev_name.red +', '+ (opt.internal ? "internal" : "external")[opt.internal?'grey':'green'] + ')';
}
},
options : ip_addresses
})
]).prompt(function(err, value) {
if (err) {
process.stdout.write('\n');
process.exit(0);
} else {
return callback(value[0]);
}
});
}