module.exports = (grunt) ->
  grunt.initConfig
    pkg: grunt.file.readJSON('package.json')

    coffee:
      compile:
        files: [{
          expand: true
          cwd: 'coffee/'
          src: ['**/*.coffee']
          dest: 'js/'
          ext: '.js'
        }]

    mochaTest:
      test:
        options:
          reporter: 'spec'
          require: [
            'iced-coffee-script/register'
            'coffee/constants.coffee'
          ]
        src: ['test/**/*.coffee']

    coffeelint:
      all: ['coffee/**/*.coffee', 'test/*.coffee', 'Gruntfile.coffee']

    codo:
      src: ['coffee']

    karma:
      unit:
        options:
          frameworks: ['browserify', 'mocha', 'chai']
          files: [
            'vendor/jquery/dist/jquery.js'
            'vendor/underscore/underscore.js'
            'vendor/backbone/backbone.js'
            'js/templates.js'
            'test/**/*.coffee'
          ]
          browsers: ['Firefox']
          singleRun: true
          preprocessors:
            'test/**/*.coffee': ['browserify']
          browserify:
            transform: ['icsify']
            extensions: '.coffee'

     jst:
      compile:
        files:
          'js/templates.js': ['templates/*.html']
      options:
        processName: (filename) -> filename.replace(/templates\/|\.html/gi, '')

  require('load-grunt-tasks')(grunt)

  grunt.registerTask 'default', ['coffee', 'jst']
  grunt.registerTask 'lint', ['coffeelint']
  grunt.registerTask 'doc', ['codo']
  grunt.registerTask 'test', ['lint', 'karma']
