Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

72 lines (53 sloc) 1.867 kb
# Description:
# Hubot's pomodoro timer
#
# Dependencies:
# None
#
# Configuration:
# None
#
# Commands:
# hubot start pomodoro - start a new pomodoro
# hubot start pomodoro <time> - start a new pomodoro with a duration of <time> minutes
# hubot stop pomodoro - stop a pomodoro
# hubot pomodoro? - shows the details of the current pomodoro
# hubot total pomodoros - shows the number of the total completed pomodoros
#
# Author:
# mcollina
currentPomodoro = null
defaultLength = 25
module.exports = (robot) ->
robot.brain.data.pomodoros ||= 0
robot.respond /start pomodoro ?(\d+)?/i, (msg) ->
if currentPomodoro?
msg.send "Pomodoro already started"
return
currentPomodoro = {}
currentPomodoro.func = ->
msg.send "Pomodoro completed!"
currentPomodoro = null
robot.brain.data.pomodoros += 1
currentPomodoro.time = new Date()
currentPomodoro.length = defaultLength
currentPomodoro.length = parseInt(msg.match[1]) if msg.match[1]?
msg.send "Pomodoro started!"
currentPomodoro.timer = setTimeout(currentPomodoro.func, currentPomodoro.length * 60 * 1000)
robot.respond /pomodoro\?/i, (msg) ->
unless currentPomodoro?
msg.send "You have not started a pomodoro"
return
minutes = currentPomodoro.time.getTime() + currentPomodoro.length * 60 * 1000
minutes -= new Date().getTime()
minutes = Math.round(minutes / 1000 / 60)
msg.send "There are still #{minutes} minutes in this pomodoro"
robot.respond /stop pomodoro/i, (msg) ->
unless currentPomodoro?
msg.send "You have not started a pomodoro"
return
clearTimeout(currentPomodoro.timer)
currentPomodoro = null
msg.send "Pomodoro stopped!"
robot.respond /total pomodoros/i, (msg) ->
msg.send "You have completed #{robot.brain.data.pomodoros} pomodoros"
Jump to Line
Something went wrong with that request. Please try again.