coffee-toaster
Version:
Minimalist build system for CoffeeScript.
91 lines (62 loc) • 1.71 kB
text/coffeescript
# requirements
os = require 'os'
# ignoring growl if user is under win32 (otherwise it'd break toaster)
growl = if os.platform() == 'win32' then null else require 'growl'
# ICONS
icon_warn = __dirname + '/../images/warning.png'
icon_error = __dirname + '/../images/error.png'
# LOGGING METHODS
log = ( msg, send_to_growl = false ) ->
console.log msg
return msg
debug = ( msg, send_to_growl = false ) ->
msg = log "#{msg.magenta}"
return msg
error = ( msg, send_to_growl = true, file = null ) ->
msg = log "ERROR ".bold.red + msg
if send_to_growl && growl?
# remove all colors
msg = msg.replace /\[\d{2}m/g, ""
# replaces all styles with _%string-here%_
msg = msg.replace /(\[\dm)([^\s]+)/ig, "<$2>$3"
# queue for growl
queue_msg
msg: msg
opts:
title: 'Coffee Toaster'
image: icon_error
return msg
warn = ( msg, send_to_growl = true ) ->
msg = log "WARNING ".bold.yellow + msg
if send_to_growl && growl?
# remove all colors
msg = msg.replace /\[\d{2}m/g, ""
# replaces all styles with _%string-here%_
msg = msg.replace /(\[\dm)([^\s]+)/ig, "<$2>$3"
# queue for growl
queue_msg
msg: msg
opts:
title: 'Coffee Toaster'
image: icon_warn
return msg
# GROWL QUEUE PRO
msgs = []
interval = null
start_worker = () ->
unless interval?
interval = setInterval process_msgs, 150
process_msgs()
stop_worker = () ->
if interval?
clearInterval interval
interval = null
queue_msg = (msg) ->
msgs.push msg
start_worker()
process_msgs = () ->
if msgs.length
msg = msgs.shift()
growl.notify msg.msg, msg.opts
else
stop_worker()