UNPKG

hueadm

Version:

A command line management interface to phillips hue

91 lines (72 loc) 1.96 kB
var tabula = require('tabula'); var common = require('../common'); module.exports = lights; // columns default without -o var columnsDefault = 'id,name,status,brightness,reachable'; // columns default with -l var columnsDefaultLong = 'uniqueid,id,name,status,brightness,type,modelid,swversion,reachable'; // sort default with -s var sortDefault = 'id'; function lights(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; } else if (opts.long) { columns = columnsDefaultLong; } columns = columns.split(','); var sort = opts.s.split(','); var listOpts; try { listOpts = common.kvToObj(args); } catch (e) { cb(e); return; } self.client.lights(function(err, data) { if (err) { cb(err); return; } if (opts.json) { console.log(JSON.stringify(data, null, 2)); cb(); return; } // convert lights data into array var d = []; Object.keys(data).forEach(function (id) { var o = data[id]; o.id = id; o.status = o.state.on ? 'on' : 'off'; o.brightness = o.state.bri; o.reachable = o.state.reachable; d.push(o); }); // filter based on listOpts d = common.filterArrayByKv(d, listOpts); // print the data tabula(d, { skipHeader: opts.H, columns: columns, sort: sort }); cb(); }); } lights.options = [ { names: ['help', 'h'], type: 'bool', help: 'Show this help.' } ].concat(common.getCliTableOptions({ includeLong: true, sortDefault: sortDefault })); lights.help = 'List all lights\n\n{{options}}';