diff --git a/Cakefile b/Cakefile index 91ed87e..c365efc 100644 --- a/Cakefile +++ b/Cakefile @@ -57,20 +57,27 @@ write_chosen_javascript = (filename, body) -> // This file is generated by `cake build`, do not edit it by hand. #{body} """ + console.log "Wrote #{filename}" # Build Chosen. # task 'build', 'build Chosen from source', build = (cb) -> - for javascript, sources of javascripts - code = '' - for source in sources - code += CoffeeScript.compile "#{fs.readFileSync source}" - write_chosen_javascript javascript, code - unless process.env.MINIFY is 'false' - write_chosen_javascript javascript.replace(/\.js$/,'.min.js'), ( - uglify.gen_code uglify.ast_squeeze uglify.ast_mangle parser.parse code - ) - cb() if typeof cb is 'function' + file_name = null; file_contents = null + try + for javascript, sources of javascripts + code = '' + for source in sources + file_name = source + file_contents = "#{fs.readFileSync source}" + code += CoffeeScript.compile file_contents + write_chosen_javascript javascript, code + unless process.env.MINIFY is 'false' + write_chosen_javascript javascript.replace(/\.js$/,'.min.js'), ( + uglify.gen_code uglify.ast_squeeze uglify.ast_mangle parser.parse code + ) + cb() if typeof cb is 'function' + catch e + print_error e, file_name, file_contents task 'watch', 'watch coffee/ for changes and build Chosen', -> console.log "Watching for changes in coffee/" @@ -118,6 +125,28 @@ untag_release = (e) -> push_repo = (args=[], cb, cb_err) -> run 'git', ['push'].concat(args), cb, cb_err +print_error = (error, file_name, file_contents) -> + line = error.message.match /line ([0-9]+):/ + if line && line[1] && line = parseInt(line[1]) + contents_lines = file_contents.split "\n" + first = if line-4 < 0 then 0 else line-4 + last = if line+3 > contents_lines.size then contents_lines.size else line+3 + console.log "Error compiling #{file_name}. \"#{error.message}\"\n" + index = 0 + for line in contents_lines[first...last] + index++ + line_number = first + 1 + index + console.log "#{(' ' for [0..(3-(line_number.toString().length))]).join('')} #{line}" + else + console.log """ +Error compiling #{file_name}: + + #{error.message} + +""" + + + task 'release', 'build, tag the current release, and push', -> console.log "Trying to tag #{version_tag()}..." with_clean_repo ->