local taskwarrior = {}

local DEFAULT_SIGNAL = "taskwarrior::stats"

local task_script = [[echo $(task +PENDING count) $(task +OVERDUE count)]]

--- callback: function(pending, overdue)
function taskwarrior.get(callback)
	awful.spawn.easy_async_with_shell(task_script, function(out)
		local pending, overdue = out:match("(%d+)%s+(%d+)")
		pending = tonumber(pending)
		overdue = tonumber(overdue)
		callback(pending, overdue)
	end)
end

function taskwarrior.emit(name)
	taskwarrior.get(function(...)
		awesome.emit_signal(name or DEFAULT_SIGNAL, ...)
	end)
end

function taskwarrior.register_signal(signal_name, update_interval)
	gears.timer {
		timeout = update_interval or 10,
		call_now = true,
		autostart = true,
		callback = function() taskwarrior.emit(signal_name) end
	}
end

return taskwarrior
