module.exports = function( grunt ) {

grunt.initConfig( {

        // Import package manifest
        pkg: grunt.file.readJSON("package.json"),

        // Banner definitions
        meta: {
                banner: "/*\n" +
                        " *  <%= pkg.title || pkg.name %> - v<%= pkg.version %>\n" +
                        " *  <%= pkg.description %>\n" +
                        " *  <%= pkg.homepage %>\n" +
                        " *\n" +
                        " *  Made by <%= pkg.author.name %>\n" +
                        " *  Under <%= pkg.license %> License\n" +
                        " */\n"
        },

        // Concat definitions
        concat: {
                options: {
                        banner: "<%= meta.banner %>"
                },
                dist: {
                        src: ["src/throttle-debounce-fn.js"],
                        dest: "dist/throttle-debounce-fn.js"
                }
        },

        // Lint definitions
        jshint: {
                files: ["src/throttle-debounce-fn.js", "test/**/*"],
                options: {
                        jshintrc: ".jshintrc"
                }
        },

        jscs: {
                src: "src/**/*.js",
                options: {
                        config: ".jscsrc"
                }
        },

        // Minify definitions
        uglify: {
                dist: {
                        src: ["dist/throttle-debounce-fn.js"],
                        dest: "dist/throttle-debounce-fn.min.js"
                },
                options: {
                        banner: "<%= meta.banner %>"
                }
        },

        // watch for changes to source
        // Better than calling grunt a million times
        // (call 'grunt watch')
        watch: {
                files: ["src/*", "test/**/*"],
                tasks: ["default"]
        }

} );

grunt.loadNpmTasks("grunt-contrib-concat");
grunt.loadNpmTasks("grunt-contrib-jshint");
grunt.loadNpmTasks("grunt-jscs");
grunt.loadNpmTasks("grunt-contrib-uglify");
grunt.loadNpmTasks("grunt-contrib-watch");

grunt.registerTask("lint", ["jshint", "jscs"]);
grunt.registerTask("build", ["concat", "uglify"]);
grunt.registerTask("default", ["jshint", "build"]);

};