let grunt = require('grunt');

let process = (src, filepath) => {
    return src.replace(/@import\s+"~\//g, '@import "');
};

grunt.initConfig({
    pkg: grunt.file.readJSON('package.json'),
    concat: {
        adminHomePageJs: {
            src: ['app/admin/homePage/**/*.js'],
            dest: '<%= pkg.bundleDest %>/adminHomePage.js'
        },
        adminHomePageLess: {
        	options: { process },
            files: {
            	'<%= pkg.bundleDest %>/less/adminHomePage.less': ['app/admin/homePage/**/*.less']
            }
        },
        basicDataJs: {
            src: ['app/admin/basicData/**/*.js'],
            dest: '<%= pkg.bundleDest %>/basicData.js'
        },
        basicDataLess: {
            options: { process },
            files: {
                '<%= pkg.bundleDest %>/less/basicData.less': ['app/admin/basicData/**/*.less']
            }
        },
        systemConfigurationJs: {
            src: ['app/admin/systemConfiguration/**/*.js'],
            dest: '<%= pkg.bundleDest %>/systemConfiguration.js'
        },
        systemConfigurationLess: {
            options: { process },
            files: {
                '<%= pkg.bundleDest %>/less/systemConfiguration.less': ['app/admin/systemConfiguration/**/*.less']
            }
        },
        basicDataCss: {
        	src: ['app/admin/basicData/**/*.css'],
            dest: '<%= pkg.bundleDest %>/basicData.css'
        },
        infrastructureJs: {
            src: ['app/admin/infrastructure/**/*.js'],
            dest: '<%= pkg.bundleDest %>/infrastructure.js'
        },
        infrastructureLess: {
        	options: { process },
            files: {
            	'<%= pkg.bundleDest %>/less/infrastructure.less': ['app/admin/infrastructure/**/*.less']
            }
        },
        contentCss: {
            src: ["Content/bootstrap.css",
                "Content/bootstrap-switch/bootstrap3/bootstrap-switch.css",
                "Content/dx.common.css",
                "Content/dx.light.css",
                "Content/animate.css",
                "Content/font-awesome.css",
                "Content/normalize.css",
                "Content/loading-bar.css",
                "Content/perfect-scrollbar.min.css",
                "Content/bootstrap-multiselect.css",
                "Content/bootstrap-datepicker/bootstrap-datepicker3.min.css",
                "Content/ui-grid.css",
                "Content/spreadjs/gcspread.sheets.excel.css",
                "Content/angular-ui-tree.css",
                "Content/sweetalert-new.css",
                "Content/isteven-multi-select.css",
                "Content/ivh-treeview/ivh-treeview.css",
                "Content/angular-inline-edit/ng-inline-edit.css",
                "Content/ivh-treeview/ivh-treeview-theme-basic.css",
                //"Content/bootflat.min.css",
                "Content/angular-notify/angular-notify.css",
                "Content/jquery.dataTables.css",
                "Content/ui-select/select.css",
                "Content/ui-select/select2.css",
                "Content/orgChart/jquery.orgchart.css",
                "Content/month-picker/picker.css",
                "Content/fancy-tree/ui.fancytree.css",
                "Content/angularjs-material/angular-material.css",
                "Content/daterangepicker.min.css",
                "Content/jquery-ui.css",
                "Content/jquery-ui.theme.css"],
            dest: 'Content/bundle_content.css'
        },
        appresourcesCss: {
            src: ["app-resources/css/customer.css",
                //"app-resources/css/theme.css", 
                "app-resources/css/nav.css",
                "app-resources/css/tree.css",
                "app-resources/css/icon.css",
                "app-resources/css/abn_tree.css",
                "app-resources/css/layout.css",
                "app-resources/css/toolbar.css",
                "app-resources/css/table.css"],
            dest: '<%= pkg.bundleDest %>/appresources.css'
        },
        appresourcesLess: {
        	options: { process },
            files: {
            	'<%= pkg.bundleDest %>/less/appresources.less': ["app-resources/css/**/*.less",
                	"app-resources/less/**/*.less"]
            }
        },
        commonCss: {
            src: ["app/common/**/*.css"],
            dest: '<%= pkg.bundleDest %>/common.css'
        },
        commonLess: {
        	options: { process },
            files: {
            	'<%= pkg.bundleDest %>/less/common.less': ["app/common/**/*.less"]
            }
        },
        modernizr: {
            src: ["Scripts/modernizr-*"],
            dest: '<%= pkg.bundleDest %>/modernizr.js'
        },
        jquery: {
            src: ["Scripts/jquery/jquery-3.1.0.js"],
            dest: '<%= pkg.bundleDest %>/jquery.js'
        },
        jquerysignalR: {
            src: ["Scripts/jquery-signalr/jquery.signalR-2.2.1.js"],
            dest: '<%= pkg.bundleDest %>/jquerysignalR.js'
        },
        angular: {
            src: ["Scripts/angular.js",
                "Scripts/angular-route.js",
                "Scripts/angular-translate.js",
                "Scripts/angular-translate-loader-partial.js",
                "Scripts/angular-route.js",
                "Scripts/angular-cookies.js",
                "Scripts/angular-sanitize.js",
                "Scripts/angular-messages.js",
                "Scripts/angular-animate.js",
                "Scripts/angular-aria.js",
                "Scripts/loading-bar.js",
                "Scripts/ngDraggable.js",
                "Scripts/ng-file-upload.js",
                "Scripts/ng-file-upload-shim.js",
                "Scripts/angular-local-storage.js",
                "Scripts/i18n/angular-locale_zh-cn.js",
                "Scripts/bindonce.js",
                "Scripts/angular-vs-repeat.js",
                "Scripts/sweetalert-new.min.js",
                "Scripts/abn-tree/abn_tree_directive.js",
                "Scripts/angular-perfect-scrollbar.min.js",
                "Scripts/angular-material/angular-material.js",
                "Scripts/ngRemoteValidate.0.6.1.js",
                "Scripts/fileSaver/FileSaver.js",
                "Scripts/fileSaver/angular-file-saver.js",
                "Scripts/moment.min.js",
                "Scripts/jquery-daterangepicker/jquery.daterangepicker.js"],
            dest: '<%= pkg.bundleDest %>/angular.js'
        },
        angularui: {
            src: ["Scripts/angular-ui/ui-bootstrap-tpls.js",
                "Scripts/angular-ui/ui-bootstrap.js",
                "Scripts/angular-ui/ui-utils-ieshiv.js",
                "Scripts/angular-ui/ui-utils.js",
                "Scripts/angular-ui-router.js",
                "Scripts/ct-ui-router-extras.js",
                "Scripts/ui-grid.js",
                "Scripts/angular-ui-tree.js",
                "Scripts/isteven-multi-select.js",
                "Scripts/xlsx.full.min.js",
                "Scripts/Export2Excel.js",
                "Scripts/Blob.js",
                "Scripts/FileSaver.min.js",
                "Scripts/moment.min.js"],
            dest: '<%= pkg.bundleDest %>/angularui.js'
        },
        bootstrap: {
            src: ["Scripts/bootstrap.js",
                "Scripts/bootstrap-switch.js",
                "Scripts/bootstrap-multiselect.js",
                "Scripts/bootstrap-datepicker/bootstrap-datepicker.js",
                "Scripts/locales/bootstrap-datepicker.zh-CN.min.js",
                "Scripts/respond.js"],
            dest: '<%= pkg.bundleDest %>/bootstrap.js'
        },
        util: {
            src: ["Scripts/underscore.js",
                "Scripts/arrgh.js",
                "Scripts/jquery.page.js",
                "Scripts/jquery.floatThead.js",
                "Scripts/jquery.dataTables.js",
                "Scripts/perfect-scrollbar.jquery.min.js",
                "Scripts/jquery-ui.min.js",
                "Scripts/numeral.js",
                "Scripts/angular-numeraljs.js",
                "Scripts/split.min.js",
                "Scripts/fancy-tree/jquery.fancytree.js",
                "Scripts/fancy-tree/jquery.fancytree.dnd.js",
                "Scripts/fancy-tree/jquery.fancytree.edit.js",
                "Scripts/fancy-tree/jquery.fancytree.glyph.js",
                "Scripts/fancy-tree/jquery.fancytree.table.js",
                "Scripts/fancy-tree/jquery.fancytree.wide.js",
                "Scripts/fancy-tree/jquery.fancytree.filter.js",
                "Scripts/fancy-tree/jquery.fancytree-all-deps.min.js",
                "Scripts/position-calculator/position-calculator.min.js"],
            dest: '<%= pkg.bundleDest %>/util.js'
        },
        jqueryval: {
            src: ["Scripts/jquery.validate*"],
            dest: '<%= pkg.bundleDest %>/jqueryval.js'
        },
        exceptionless: {
            src: ["Scripts/exceptionless/exceptionless.js", "Scripts/exceptionless/integrations/angular.js"],
            dest: '<%= pkg.bundleDest %>/exceptionless.js'
        },
        angularCache: {
            src: ["Scripts/angular-cache/angular-cache.js"],
            dest: '<%= pkg.bundleDest %>/angular-cache.js'
        },
        echarts: {
            src: ["Scripts/echarts.min.js",
                "Scripts/orgChart/jquery.orgchart.js",
                "Scripts/orgChart/html2canvas.min.js"],
            dest: '<%= pkg.bundleDest %>/echarts.js'
        },
        mentio: {
            src: ["Scripts/mentio.js"],
            dest: '<%= pkg.bundleDest %>/mentio.js'
        },
        adminApp: {
            src: ["app/adminApp.js",
                "app/app.config.js",
                "app/adminModule.js"],
            dest: '<%= pkg.bundleDest %>/adminApp.js'
        },
        commonJs: {
            src: ["app/common/**/*.js"],
            dest: '<%= pkg.bundleDest %>/common.js'
        },
        frameworkJs: {
            src: ["app/framework/**/*.js"],
            dest: '<%= pkg.bundleDest %>/framework.js'
        },
        cldr: {
            src: ["Scripts/cldr.js",
                "Scripts/cldr/event.js",
                "Scripts/cldr/supplemental.js",
                "Scripts/cldr/unresolved.js"],
            dest: '<%= pkg.bundleDest %>/cldr.js'
        },
        globalize: {
            src: ["Scripts/globalize.js",
                "Scripts/globalize/number.js",
                "Scripts/globalize/date.js"],
            dest: '<%= pkg.bundleDest %>/globalize.js'
        },
        dx: {
            src: ["Scripts/jquery.globalize/globalize.js",
                "Scripts/jszip.min.js",
                "Scripts/dx.all.js",
                "Scripts/devextreme-localization/dx.messages.cn.js"],
            dest: '<%= pkg.bundleDest %>/dx.js'
        },
        spreadjs: {
            src: ["Scripts/spreadjs/gcspread.sheets.all.9.40.20161.0.min.js"],
            dest: '<%= pkg.bundleDest %>/spread.js'
        },
        ivhTreeview: {
            src: ["Scripts/angular-ivh-treeview/ivh-treeview.js",
                "Scripts/angular-notify/angular-notify.js",
                "Scripts/angular-inline-edit/ng-inline-edit.js"],
            dest: '<%= pkg.bundleDest %>/ivh-treeview.js'
        },
        uiSelect: {
            src: ["Scripts/ui-select/select.js"],
            dest: '<%= pkg.bundleDest %>/ui-select.js'
        },
        accountLogin: {
            src: ["app-resources/css/customer.css"],
            dest: '<%= pkg.bundleDest %>/accountLogin.css'
        },
        scriptsLogin: {
            src: ["Scripts/login.js", "Scripts/jquery.validate.js"],
            dest: '<%= pkg.bundleDest %>/scriptsLogin.js'
        }
    },
    less: {
        adminHomePage: {
            files: {
                "<%= pkg.bundleDest %>/adminHomePage.less": "<%= pkg.bundleDest %>/less/adminHomePage.less"
            }
        },
        basicData: {
            files: {
                "<%= pkg.bundleDest %>/basicData.less": "<%= pkg.bundleDest %>/less/basicData.less"
            }
        },
        infrastructure: {
            files: {
            	"<%= pkg.bundleDest %>/infrastructure.less": "<%= pkg.bundleDest %>/less/infrastructure.less"
            }
        },
        appresources: {
            files: {
            	'<%= pkg.bundleDest %>/appresources.less': '<%= pkg.bundleDest %>/less/appresources.less'
            }
        },
        systemConfiguration: {
            files: {
                '<%= pkg.bundleDest %>/systemConfiguration.less': '<%= pkg.bundleDest %>/less/systemConfiguration.less'
            }
        },
        common: {
            files: {
            	'<%= pkg.bundleDest %>/common.less': '<%= pkg.bundleDest %>/less/common.less'
            }
        }
    }
});

grunt.loadNpmTasks('grunt-contrib-concat');
grunt.loadNpmTasks('grunt-contrib-less');

//grunt.registerTask('lessDev', ['less:development']);