hueadm
Version:
A command line management interface to phillips hue
86 lines (68 loc) • 1.72 kB
JavaScript
var tabula = require('tabula');
var common = require('../common');
module.exports = groups;
// columns default without -o
var columnsDefault = 'id,name,type,lights';
// sort default with -s
var sortDefault = 'id';
function groups(subcmd, opts, args, cb) {
var self = this;
if (opts.help) {
self.do_help('help', {}, [subcmd], cb);
return;
}
var columns = columnsDefault;
if (opts.o) {
columns = opts.o;
}
columns = columns.split(',');
var sort = opts.s.split(',');
var listOpts;
try {
listOpts = common.kvToObj(args);
} catch (e) {
cb(e);
return;
}
self.client.groups(function(err, data) {
if (err) {
cb(err);
return;
}
if (opts.json) {
console.log(JSON.stringify(data, null, 2));
cb();
return;
}
// convert groups data into array
var d = [];
Object.keys(data).forEach(function (id) {
var o = data[id];
d.push({
id: id,
name: o.name,
type: o.type,
lights: o.lights.join(','),
});
});
// filter based on listOpts
d = common.filterArrayByKv(d, listOpts);
// print the data
tabula(d, {
skipHeader: opts.H,
columns: columns,
sort: sort
});
cb();
});
}
groups.options = [
{
names: ['help', 'h'],
type: 'bool',
help: 'Show this help.'
}
].concat(common.getCliTableOptions({
sortDefault: sortDefault
}));
groups.help = 'List all light groups\n\n{{options}}';