/* eslint-disable */
const { existsSync } = require('fs');
const { join } = require('path');

module.exports = async function addCopyPlugin(opts) {
  const { config, userConfig, cwd } = opts;
  const copyPatterns = [
    existsSync(join(cwd, 'public')) && {
      from: join(cwd, 'public'),
    },
    ...(userConfig.copy
      ? userConfig.copy.map(item => {
        if (typeof item === 'string') {
            return {
              from: join(cwd, item),
              to: item,
            };
          }
          return {
            from: join(cwd, item.from),
            to: item.to,
          };
        })
      : []),
  ].filter(Boolean);

  if (copyPatterns.length) {
    // eslint-disable-next-line global-require
    config.plugin('copy').use(require('../compiled/copy-webpack-plugin'), [
      {
        patterns: copyPatterns,
      },
    ]);
  }
};