const webpack = require('webpack');
const config = require('./webpack.config');
const options = require('./webpack.config.options');
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
const StyleLintPlugin = require('stylelint-webpack-plugin');

module.exports = function(env) {
    var generatedConfig = config(env, false);

    generatedConfig.mode = 'production';
    generatedConfig.plugins = [
        new webpack.LoaderOptionsPlugin({
            minimize: true
        }),
        new StyleLintPlugin({
            configFile: '.stylelintrc',
            context: 'src',
            emitErrors: true,
            failOnError: true,
            quiet: false,
        }),

        // Lesman 10/03/2017
        // This plugin enforces case sensitive paths in order
        // to give build consistency across systems (OsX is not case sensitive)
        // however the plugin is relatively slow (adds ~20 seconds to the build)
        // and our jenkins system is already case-sensitive so it's not critical
        // The plugin does provide better error message though, so we may want to
        // re-enable it if case-sensitivity build problems are an issue

        // new CaseSensitivePathsPlugin({debug: true}),

        new webpack.optimize.UglifyJsPlugin({
            // compress: {
            //     warnings: true
            // },
            sourceMap: true
        }),
        new webpack.DefinePlugin({
            'process.env.NODE_ENV' : JSON.stringify('production')
        }),
    ].concat(options.getPlugins(env || {}));

    return generatedConfig;
}
