i3status-taskwarrior
Version:
Prints currently active taskwarrior task.
73 lines (61 loc) • 1.65 kB
text/typescript
/**
* Project: i3status-taskwarrior
*
* @author Amado Martinez <http://amadomartinez.mx>
*/
import * as tw from "./lib/taskwarrior"
import process = require("process");
import moment = require("moment");
var get_tw_status = function () {
var status = "Active: ";
var active_ids = tw.getIds("+ACTIVE");
var now = moment();
switch (active_ids.length) {
case 0:
status += "None";
break;
default:
var id = active_ids.pop();
var desc = tw.getProperty("description", id);
var timediff = moment(tw.getProperty('start', id)).fromNow(true);
status += ` [ ${id} ] ${desc} ( ${timediff} )`;
}
return status;
};
function append_status(itemlist){
var status = get_tw_status();
var myitem = {
instance: "",
name: "Node",
color: "#fcc0cf",
markup: "none",
full_text: status
};
itemlist.unshift(myitem);
return itemlist;
}
if (process.argv.length > 2 && <string>process.argv[2] == 'json') {
var list = [];
append_status(list);
console.log(JSON.stringify(list[0]));
process.exit(0);
}
if(Boolean((<any>process.stdin).isTTY))
{
console.log(get_tw_status());
process.exit(0);
}
process.stdin.on('readable', () => {
var d = process.stdin.read();
if(d === null) return;
var dstr = d.toString();
//console.log(dstr);
if(dstr.match(/^,\[.*\]/)){
console.log(','+JSON.stringify(
append_status(JSON.parse(dstr.replace(/^,/,'')))
));
}else{
process.stdout.write(dstr);
}
});