{watcher,utility} = browserBuild = require 'browser-build'
np = require 'path'
cb = require 'coffeebars'

coffeePageInputExt = ".page"
coffeePageOutputExt = ".coffee"
exports.buildCoffeePages = buildCoffeePages = (config) ->
    return unless config?
    config.input.extension ?= coffeePageInputExt
    config.output.extension ?= coffeePageOutputExt
    for inputFile in utility.list config.input.directory, {include:config.input.extension}
        buildCoffeePage config, inputFile
    # finally, build coffeescript
    utility.buildCoffee config.output.directory, config.output.directory

exports.watchCoffeePages = watchCoffeePages = (config) ->
    return unless config?
    config.input.extension ?= coffeePageInputExt
    config.output.extension ?= coffeePageOutputExt
    watcher.watchDirectory config.input.directory, {include:config.input.extension}, (file) ->
        console.log "Compiling #{file}"
        buildCoffeePage config, file
    # finally, build coffeescript
    utility.watchCoffee config.output.directory, config.output.directory

exports.buildCoffeePage = buildCoffeePage = (config, inputFile) ->
    input = config.input.directory
    output = config.output.directory
    inputExt = config.input.extension
    outputExt = config.output.extension
    outputFile = np.join(output, np.relative(input, inputFile)).slice(0, -inputExt.length) + outputExt
    source = utility.read inputFile
    try
        compiled = cb.toCoffeeScript source
        utility.write outputFile, compiled
    catch e
        console.log e
