EQe: Monitoreando Rachota usando Applescript y bash

Primero explico el problema: En la pega usamos un programa llamado Rachota para medir tanto el tiempo que

Rachota TimeTracker

Rachota TimeTracker

trabajamos asi como el proyecto en que lo hacemos.  Como pueden imaginarse, esto suena bonito hasta que soy yo el que tengo que cambiar de una tarea a otra o que una vez terminada la jornada laboral se queda encendido (esto no es tan malo, trabajar sin trabajar).  El problema sucede cuando después del almuerzo, me doy cuenta que no he encendido Rachota o que llevo todo el día “Revisando mails”.

Aqui es donde nació la necesidad de tener un programita, un script que revise periodicamente el estado de Rachota y en función de la hora o día de la semana me advierta posibles “Estás trabajando gratis!”. Este programita, en forma original se llama EQe (En Que estoy). Más detalles después del salto

Toda la parafernalia EQe se compone de:

  1. Un script bash que revisa el estado de Rachota y que en su output me indica el estado (más adelante los posibles estados).
  2. Un applescript que se encarga del despliegue al estilo mac de la advertencia que envía el script en bash.
  3. Y finalmente, una linea en el crontab local para ejecutar todo el proceso en forma periódica.

Vamos por el script bash.

Script Bash

La configuración del script es:

# ------------------------------------------------------------
# Configuraciones
RACHOTA_FILE="/Users/radaworks/Programas/rachota/settings.cfg"
 
TIME_START=0700
TIME_END=1800
 
RELAX_ON_WEEKEDND="true"
# ------------------------------------------------------------

Debemos especificar la ruta completa al archivo de configuración de Rachota (en donde éste guarda la tarea activa).

Los siguientes parametros (líneas TIME_START y TIME_END) indican el horario normal de trabajo, de forma que las alertas son distintas si esta dentro o fuera del horario de oficina.

La misma idea tiene RELAX_ON_WEEKEND, dado que a algunos les gusta trabajar el fin de semana.

Applescript

Los primeros parametros son

-- Skins, por el momento: classic o emoticons
set skin to "emoticons"
-- Ruta al script que analiza Rachota
set path2eqeScript to "/Users/radaworks/forge/scripts/EQe/rachota.sh"

skin indica el conjunto de íconos usado en el despliegue de contenido. de momento los valores posibles para esta variable son “emoticons” y “classic“.

El segundo parametro es la ruta completa al script bash que vimos antes.

-- Mensajes a desplegar
set msgTitle to "EQe says:"
set idlemsg to "Estas trabajando gratis?"
set noworkmsg to "No toy trabajando!"
set turnonmsg to "Fuck!, Te tinca abrir rachota?"
set leftonmsg to "Se nos quedó abierto rachota?"

El siguiente conjunto de parametros son los amistosos mensajes que muestra el script (usando Growl, el que es requisito para que funcione este script) para notificar los estados indicados por el script bash.

-- En funcion de resultado de Script, despliego distintos mensajes
if rawactivetask is equal to "@idle" then
	my sendGrowlMessage(idlemsg, msgTitle, idleIcon, true)
else if rawactivetask is equal to "@nowork" or rawactivetask is equal to "@weekend" then
	my sendGrowlMessage(noworkmsg, msgTitle, noworkIcon, true)
else if rawactivetask is equal to "@turnrachotaon" then
	my sendGrowlMessage(turnonmsg, msgTitle, turnonIcon, true)
else if rawactivetask starts with "@lefton" then
	my sendGrowlMessage(leftonmsg, msgTitle, leftonIcon, true)
else
	my sendGrowlMessage("Running task", rawactivetask, workIcon, false)
end if

Por último, tenemos una serie de if/else que es cada uno de los mensajes a desplegar.  A futuro pretento colocar por configuración cuales muestra y cuales no, de momento si no quieres uno de los mensajes puedes comentarlo (usado doble guión –).

Que significa cada estado?

  1. @idle: Soy un ocioso, debería estar trabajando pero Rachota dice que no estoy haciendo nada. La causa más común es que se quedó sin asignar tarea después de almuerzo o que llegué en la mañana y no puse ninguna tarea activa.
  2. @nowork y @weekend: Ambos estados son en general asociados a que estoy fuera del horario de trabajo y Rachota está apagado o bien en modo Idle. En la mayoría de los casos no es un problema (salvo que esté revisando un ticket fuera del horario de oficina).
  3. @turnrachotaon: Un caso de lujo. Estamos en horario hábil y rachota apagado. Esto es el climax de trabajo gratuito.
  4. @lefton: Estamos fuera de horario de trabajo (definido en el archivo de configuración del script bash) y rachota tiene una tarea activa.  Suele ocurrir que no apagué rachota al salir de la oficina.
  5. Si no estamos en ninguno de estos casos, implica que tenemos una tarea activa y que estamos en horario laboral. El desplegar la tarea activa sirve para darnos cuenta cuando cambiamos de contexto pero no cambiamos rachota.

crontab

Para que la magia funcione, necesitamos que el script se ejecute regularmente, para esto nos apoyamos de crontab (ejecutar crontab -e en su consola favorita)

# min   hour    mday    month   wday    command
*/10 * * * * /usr/bin/osascript /Users/radaworks/forge/scripts/EQe/EQe.scpt

Por último, descarga la versión 0.9.1 aqui

Y finalmente, una serie de fotos del resultado final del script usado el skin “emoticons”

Tags: , , , ,

2 Responses to “EQe: Monitoreando Rachota usando Applescript y bash”

  1. LEo says:

    No existen sistemas operativos malos. Solo malos usuarios. El script de bash corre sin problemas en Cygwin: http://www.cygwin.com. Para scripting puedes usar en windows la siguiente joyita, que en mi opinion hace ver a Applescript como si fuera de juguete: http://www.autohotkey.com (De todas formas python o perl tambien pueden hacerse cargo de la parte script).
    Para la notificacion, nada mas ni nada menos que snarl: http://www.fullphat.net/
    Un poco de elbow grease y puedes armar la misma solucion para windows XP o Vista.

    Desde Lund, Suecia, reportó:

    LEo

  2. Alex Bustos says:

    Vamos a revisar los programillas y scripting. Se ven interesantes…. Desde Chilito, Alex :D