module.exports = function (grunt) {
    // Project configuration.
    grunt.initConfig({
        pkg: grunt.file.readJSON('package.json'),
        
        clean: {
            options: {
                force: true
            },
            js: ['dist/js/'],
            css: ['dist/css/'],
            assets: ['dist/assets/*']
        },
        
        assemble: {
            options: {
                partials: 'src/includes/*.hbs',
                layout: 'src/layouts/html.hbs',
                flatten: true
            },
            html: {
                files: {
                    'dist/': ['src/pages/html/*.hbs']
                }
            },
            markdown: {
                options: {
                    layout: 'src/layouts/markdown.hbs'
                },
                files: {
                    'dist/': ['src/pages/markdown/*.md']
                }
            }
        },
        
        compass: {
            dist: {
                options: {
                    config: 'config.rb'
                }
            }
        },
        
        concat: {
            options: {
                separator: ';'
            },
            foundation: {
                src: [
                    'bower_components/foundation/js/foundation/foundation.js',
                    'bower_components/foundation/js/foundation/foundation.topbar.js'
                ],
                dest: 'dist/assets/js/foundation.js'
            },
            modernizr: {
                src: [
                    'bower_components/modernizr/modernizr.js'
                ],
                dest: 'dist/assets/js/modernizr.js'
            },
            nifi: {
                src: [
                    'src/js/app.js'
                ],
                dest: 'dist/js/app.js'
            }
        },
        
        copy: {
            dist: {
                files: [{
                    expand: true,
                    cwd:  'src/images/',
                    src:  ['**/*.{png,jpg,gif,svg,ico}'],
                    dest: 'dist/images/'
                }, {
                    expand: true,
                    cwd:  'bower_components/jquery/dist',
                    src:  ['jquery.min.js'],
                    dest: 'dist/assets/js/'
                }, {
                    expand: true,
                    cwd:  'bower_components/webfontloader',
                    src:  ['webfontloader.js'],
                    dest: 'dist/assets/js/'
                }, {
                    expand: true,
                    cwd:  'bower_components/font-awesome/css',
                    src:  ['font-awesome.min.css'],
                    dest: 'dist/assets/stylesheets/'
                }, {
                    expand: true,
                    cwd:  'bower_components/font-awesome',
                    src:  ['fonts/*'],
                    dest: 'dist/assets/'
                }]
            }
        },
        
        watch: {
            grunt: { 
                files: ['Gruntfile.js'], 
                tasks: ['dev'] 
            },
            css: {
                files: 'src/scss/*.scss',
                tasks: ['css']
            },
            script: { 
                files: 'src/js/*.js',
                tasks: ['js']
            },
            images: {
                files: 'src/images/*.{png,jpg,gif,svg,ico}',
                tasks: ['img']
            },
            assemble: {
                files: ['src/{includes,layouts}/*.hbs', 'src/pages/{html,markdown}/*.{hbs,md}'],
                tasks: ['assemble']
            }
        }
    });
    
    grunt.loadNpmTasks('grunt-newer');
    grunt.loadNpmTasks('grunt-contrib-clean');
    grunt.loadNpmTasks('grunt-contrib-copy');
    grunt.loadNpmTasks('grunt-contrib-concat');
    grunt.loadNpmTasks('assemble');
    grunt.loadNpmTasks('grunt-contrib-compass');
    grunt.loadNpmTasks('grunt-contrib-watch');
    
    grunt.registerTask('img', ['newer:copy']);
    grunt.registerTask('css', ['clean:css', 'compass']);
    grunt.registerTask('js',  ['clean:js', 'concat']);
    grunt.registerTask('dev',  ['clean', 'assemble', 'css', 'js', 'img', 'copy', 'watch']);
    grunt.registerTask('default', ['clean', 'assemble', 'css', 'js', 'img', 'copy']);
};
