module.exports = (grunt) => {
    grunt.registerTask('forms-app-init', function() {
        const packageFile = global.packageFile;
        if ( !global.packageFile )
            grunt.log.ok('no package file'.red);
        else {
            const config = require('./appforms.json');
            if ( config ) {
                //packageFile.tasks.deploy.push(...config.tasks.deploy);
                packageFile.forms = config.forms;
            }
        }

        grunt.initConfig({
            pkg: packageFile,

            clean: {
                options: {
                    force: true
                },
                postbuild: packageFile.forms.clean.postbuild,
                prebuild: packageFile.forms.clean.prebuild
            },

            requirejs: {
                compile: {
                    options: packageFile.forms.js.requirejs.options
                }
            },

            less: {
                production: {
                    options: {
                        compress: true,
                        ieCompat: false,
                        modifyVars: packageFile.forms.less.vars,
                        plugins: [
                            new (require('less-plugin-clean-css'))()
                        ]
                    },
                    files: {
                        "<%= pkg.forms.less.files.dest %>": packageFile.forms.less.files.src
                    }
                }
            },

            concat: {
                options: {
                    stripBanners: true,
                    banner: global.copyright
                },
                dist: {
                    src: [packageFile.forms.js.requirejs.options.out],
                    dest: packageFile.forms.js.requirejs.options.out
                }
            },

            copy: {
                localization: {
                    files: packageFile.forms.copy.localization
                },
                indexhtml: {
                    files: packageFile.forms.copy.indexhtml
                }
            },

            replace: {
                varsEnviroment: {
                    src: ['<%= pkg.forms.js.requirejs.options.out %>'],
                    overwrite: true,
                    replacements: [{
                        from: /\{\{PRODUCT_VERSION\}\}/g,
                        to: packageFile.version
                    }, ...global.jsreplacements]
                },
            },

            inline: {
                dist: {
                    src: packageFile.forms.inline.src
                }
            }

        });
    });
    
    grunt.registerTask('deploy-app-forms', ['forms-app-init', 'clean:prebuild', /*'imagemin',*/ 'less',
                                                            'requirejs', 'concat', 'copy', 'inline', /*'json-minify',*/
                                                            'replace:varsEnviroment', /*'replace:prepareHelp',*/ 'clean:postbuild']);
}