import path from "path";
import svelte from "rollup-plugin-svelte";
import cssOnlyRollupPlugin from "rollup-plugin-css-only";
import resolve from "@rollup/plugin-node-resolve";
import commonjs from "@rollup/plugin-commonjs";
import {terser} from "rollup-plugin-terser";
import livereloadRollupPlugin from "rollup-plugin-livereload";
import imageminPlugin from "rollup-plugin-imagemin";

const production = process.env.ENV === 'production';
const buildDir = process.env.BUILD_DIR;
const publicDir = process.env.PUBLIC_DIR;
const input = process.env.INPUT.split(':');

export default commandLineArgs => ({
    input: input,
    output: {
        format: 'es',
        sourcemap: true,
        dir: path.join(publicDir, 'js'),
        entryFileNames: (chunkInfo) => {
            const name = chunkInfo.facadeModuleId ?
                path.relative(buildDir, chunkInfo.facadeModuleId) :
                chunkInfo.name;
            return name + '.js';
        },
        chunkFileNames: '[name].js',
    },
    plugins: [
        imageminPlugin({
            fileName: '../img/[name][extname]'
        }),

        svelte({
            compilerOptions: {
                dev: !production,
                hydratable: true,
            },
        }),

        // Extract css into separate files
        cssOnlyRollupPlugin({output: 'bundle.css'}),

        // If you have external dependencies installed from
        // npm, you'll most likely need these plugins. In
        // some cases you'll need additional configuration -
        // consult the documentation for details:
        // https://github.com/rollup/plugins/tree/master/packages/commonjs
        resolve({
            browser: true,
            dedupe: ['svelte'],
        }),
        commonjs(),

        // Live reload in dev
        !production && !!commandLineArgs.watch && livereloadRollupPlugin(publicDir),

        // Minify in production
        production && terser(),
    ],
    watch: {
        clearScreen: false,
    },
});