text: /*jshint camelcase: false*/
  // Generated on 2013-11-16 using generator-chrome-extension 0.2.5
  'use strict';
  var mountFolder = function (connect, dir) {
      return connect.static(require('path').resolve(dir));
  };
  
  // # Globbing
  // for performance reasons we're only matching one level down:
  // 'test/spec/{,*/}*.js'
  // use this if you want to recursively match all subfolders:
  // 'test/spec/**/*.js'
  
  module.exports = function (grunt) {
      // show elapsed time at the end
      require('time-grunt')(grunt);
      // load all grunt tasks
      require('load-grunt-tasks')(grunt);
  
      // configurable paths
      var yeomanConfig = {
          app: 'app',
          dist: 'dist'
      };
  
      grunt.initConfig({
          yeoman: yeomanConfig,
          watch: {
              options: {
                  spawn: false
              },
              coffee: {
                  files: ['<%= yeoman.app %>/scripts/{,*/}*.coffee'],
                  tasks: ['coffee:dist']
              },
              coffeeTest: {
                  files: ['test/spec/{,*/}*.coffee'],
                  tasks: ['coffee:test']
              }
          },
          connect: {
              options: {
                  port: 9000,
                  // change this to '0.0.0.0' to access the server from outside
                  hostname: 'localhost'
              },
              test: {
                  options: {
                      middleware: function (connect) {
                          return [
                              mountFolder(connect, '.tmp'),
                              mountFolder(connect, 'test')
                          ];
                      }
                  }
              }
          },
          clean: {
              dist: {
                  files: [{
                      dot: true,
                      src: [
                          '.tmp',
                          '<%= yeoman.dist %>/*',
                          '!<%= yeoman.dist %>/.git*'
                      ]
                  }]
              },
              server: '.tmp'
          },
          jshint: {
              options: {
                  jshintrc: '.jshintrc'
              },
              all: [
                  'Gruntfile.js',
                  '<%= yeoman.app %>/scripts/{,*/}*.js',
                  'test/spec/{,*/}*.js'
              ]
          },
          mocha: {
              all: {
                  options: {
                      run: true,
                      urls: ['http://localhost:<%= connect.options.port %>/index.html']
                  }
              }
          },
          coffee: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '<%= yeoman.app %>/scripts',
                      src: '{,*/}*.coffee',
                      dest: '.tmp/scripts',
                      ext: '.js'
                  }]
              },
              test: {
                  files: [{
                      expand: true,
                      cwd: 'test/spec',
                      src: '{,*/}*.coffee',
                      dest: '.tmp/spec',
                      ext: '.js'
                  }]
              }
          },
          // not used since Uglify task does concat,
          // but still available if needed
          concat: {
            dist: {
              expand: true,
              cwd: '<%= yeoman.app %>/scripts',
              src: '*.js',
              dest: '<%= yeoman.dist %>/scripts',
            }
          },
          // not enabled since usemin task does concat and uglify
          // check index.html to edit your build targets
          // enable this task if you prefer defining your build targets here
          /*uglify: {
              dist: {}
          },*/
          useminPrepare: {
              options: {
                  dest: '<%= yeoman.dist %>'
              },
              html: [
                  '<%= yeoman.app %>/popup.html'
              ]
          },
          usemin: {
              options: {
                  dirs: ['<%= yeoman.dist %>']
              },
              html: ['<%= yeoman.dist %>/{,*/}*.html'],
              css: ['<%= yeoman.dist %>/styles/{,*/}*.css']
          },
          imagemin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '<%= yeoman.app %>/images',
                      src: '{,*/}*.{png,jpg,jpeg}',
                      dest: '<%= yeoman.dist %>/images'
                  }]
              }
          },
          svgmin: {
              dist: {
                  files: [{
                      expand: true,
                      cwd: '<%= yeoman.app %>/images',
                      src: '{,*/}*.svg',
                      dest: '<%= yeoman.dist %>/images'
                  }]
              }
          },
          cssmin: {
              dist: {
                  files: {
                      '<%= yeoman.dist %>/styles/main.css': [
                          '.tmp/styles/{,*/}*.css',
                          '<%= yeoman.app %>/styles/{,*/}*.css'
                      ]
                  }
              }
          },
          htmlmin: {
              dist: {
                  options: {
                      /*removeCommentsFromCDATA: true,
                      // https://github.com/yeoman/grunt-usemin/issues/44
                      //collapseWhitespace: true,
                      collapseBooleanAttributes: true,
                      removeAttributeQuotes: true,
                      removeRedundantAttributes: true,
                      useShortDoctype: true,
                      removeEmptyAttributes: true,
                      removeOptionalTags: true*/
                  },
                  files: [{
                      expand: true,
                      cwd: '<%= yeoman.app %>',
                      src: '*.html',
                      dest: '<%= yeoman.dist %>'
                  }]
              }
          },
          // Put files not handled in other tasks here
          copy: {
              dist: {
                  files: [{
                      expand: true,
                      dot: true,
                      cwd: '<%= yeoman.app %>',
                      dest: '<%= yeoman.dist %>',
                      src: [
                          '*.{ico,png,txt}',
                          'images/{,*/}*.{webp,gif}',
                          '_locales/{,*/}*.json'
                      ]
                  }, {
                      expand: true,
                      cwd: '.tmp/images',
                      dest: '<%= yeoman.dist %>/images',
                      src: [
                          'generated/*'
                      ]
                  }]
              }
          },
          concurrent: {
              server: [
                  'coffee:dist'
                  ],
              test: [
                  'coffee'
              ],
              dist: [
                  'coffee',
                  'imagemin',
                  'svgmin',
                  'htmlmin'
              ]
          },
          chromeManifest: {
              dist: {
                  options: {
                      buildnumber: false,
                      background: {
                          target:'scripts/background.js'
                      }
                  },
                  src: '<%= yeoman.app %>',
                  dest: '<%= yeoman.dist %>'
              }
          },
          compress: {
              dist: {
                  options: {
                      archive: 'package/SFNav.zip'
                  },
                  files: [{
                      expand: true,
                      cwd: 'dist/',
                      src: ['**'],
                      dest: ''
                  }]
              }
          }
      });
  
      grunt.registerTask('test', [
          'clean:server',
          'concurrent:test',
          'connect:test',
          'mocha'
      ]);
  
      grunt.registerTask('build', [
          'clean:dist',
          'chromeManifest:dist',
          'useminPrepare',
          'concurrent:dist',
          'cssmin',
          'concat',
          'copy',
          'compress'
      ]);
  
      grunt.registerTask('default', [
          'jshint',
          'test',
          'build'
      ]);
  };
  