text: ﻿/*
  This file in the main entry point for defining grunt tasks and using grunt plugins.
  Click here to learn more. http://go.microsoft.com/fwlink/?LinkID=513275&clcid=0x409
  */
  
  
  module.exports = function (grunt) {
      grunt.initConfig({
          pkg: grunt.file.readJSON('package.json'),
  
          //###########################################################################################################
          //############################################ CLEAN   RESOURCES ############################################
          //###########################################################################################################
          clean: {
              css: ['wwwroot/src/**/*.css', 'wwwroot/styles/*.css'],
              js: ['wwwroot/src/**/*.{js,map}', 'wwwroot/scripts/{js,map}'],
              images: 'wwwroot/images/**/*.{png,jpg,gif}',
              html:  'wwwroot/*.html',
          },
          //###########################################################################################################
          //############################################ DOWNLOAD LIBRARIES ###########################################
          //###########################################################################################################
          bower: {
              install: {
                  options: {
                      targetDir: 'wwwroot/src/lib',
                      cleanTargetDir: true,
                      //layout: "byComponent",
                      layout: function (type, component, source) {
                          if (component !== 'Chart.js') {
                              return component;
                          }
                          return "Chartjs";
                      }
                  }
              }
          },
          //###########################################################################################################
          //############################################ COPY    RESOURCES ############################################
          //###########################################################################################################
          copy: {
              css: {
                  files: [{
                      expand: true,
                      dest: 'wwwroot/src',
                      src: 'assets/**/*.css'
                  }]
              },
              html: {
                  files:
                      [{
                      expand: true,
                      cwd: 'assets/',
                      dest: 'wwwroot',
                      src: '*.html'
                  }]
              },
              js: {
                  files: [{
                      expand: true,
                      dest: 'wwwroot/src',
                      src: 'assets/**/*.js'
                  }]
              },
          },
          //###########################################################################################################
          //############################################ CSS   COMPRESSION ############################################
          //###########################################################################################################
          cssmin: {
              concat: {
                  options: { advanced: false },
                  files: { 'wwwroot/styles/site.css': ['wwwroot/src/lib/**/*.css', 'wwwroot/src/assets/**/*.css', 'wwwroot/src/assets/styles/custom.css'] },
              },
              minify: {
                  options: { keepSpecialComments: 0 },
                  files: { 'wwwroot/styles/site.css': 'wwwroot/styles/site.css' },
              }
          },
          uncss: {
              dist: {
                  options :{
                      ignore: [/\.panel*/]
                  },
                  files: {
                      'wwwroot/styles/site.css': ['wwwroot/home.html', 'wwwroot/partial-landing.html', 'wwwroot/partial-realtime.html']
                  }
              }
          },
          //###########################################################################################################
          //############################################ JS    COMPRESSION ############################################
          //###########################################################################################################
          uglify: {
              options: {
                  sourceMap: true,
                  banner: '/*! Community Days 2015 - <%= pkg.name %> - v<%= pkg.version %> - ' + '<%= grunt.template.today("yyyy-mm-dd") %> */',
                  //compress: {
                  //    drop_console: true
                  //},
              },
              files: {
                  //src: ['wwwroot/src/**/*.js'],
                  src: ['wwwroot/src/lib/domready/*.js', 'wwwroot/src/lib/angular/*.js', 'wwwroot/src/lib/**/*.js', 'wwwroot/src/assets/scripts/config.js', 'wwwroot/src/assets/scripts/*Service.js', 'wwwroot/src/assets/scripts/*Controller.js', 'wwwroot/src/assets/scripts/app.js', '!wwwroot/src/lib/bootstrap/**', '!wwwroot/src/lib/jquery/**'],
                  dest: 'wwwroot/scripts/app.js',
              }
          },
          //###########################################################################################################
          //############################################ IMAGE COMPRESSION ############################################
          //###########################################################################################################
          imagemin: {
              target: {
                  options: {
                      optimizationLevel: 7
                  },
                  files: [{
                      expand: true,
                      cwd: 'assets/',
                      dest: 'wwwroot',
                      src: 'images/**/*.{png,jpg,gif}'
                  }]
              }
          }
      });
      //###########################################################################################################
  
      grunt.registerTask("css", ["clean:css", "clean:html", "bower", "copy:css", "copy:html", "cssmin:concat", "uncss", "cssmin:minify"]);
      grunt.registerTask("js", ["clean:js", "bower", "copy:js", "uglify"]);
      grunt.registerTask("images", ["clean:images", "imagemin"]);
  
      grunt.registerTask("build", ["clean", "bower", "copy", "uglify", "imagemin", "cssmin:concat", "uncss", "cssmin:minify"]);
      grunt.registerTask("default", "build");
  
      grunt.loadNpmTasks("grunt-bower-task");
      grunt.loadNpmTasks("grunt-contrib-clean");
      grunt.loadNpmTasks("grunt-contrib-copy");
      grunt.loadNpmTasks("grunt-contrib-uglify");
      grunt.loadNpmTasks("grunt-contrib-cssmin");
      grunt.loadNpmTasks("grunt-contrib-imagemin");
      grunt.loadNpmTasks("grunt-uncss");
  
      //grunt.log.writeln('hello grunt!');
  };
  