#!/usr/bin/env node

const fs = require('fs/promises');
const path = require('path');
const existsSync = require('fs').existsSync;

const client = require.resolve('@nocobase/client');
const antd = require.resolve('antd');

exports.run = async (log) => {
  const localeDir = path.resolve(__dirname, './dist/locale');
  if (existsSync(localeDir)) {
    await fs.rmdir(localeDir, { force: true, recursive: true });
  }

  log('coping client locale');
  await fs.cp(path.resolve(path.dirname(client), 'locale'), localeDir, {
    recursive: true,
    force: true,
  });

  log('coping antd locale');
  const files = await fs.readdir(path.resolve(path.dirname(antd), 'locale'));
  await fs.mkdir(path.resolve(localeDir, 'antd'), { force: true, recursive: true });
  for (const file of files) {
    if (path.extname(file) !== '.js') {
      continue;
    }
    const content = require(path.resolve(path.dirname(antd), 'locale', file)).default;
    try {
      await fs.writeFile(
        path.resolve(localeDir, 'antd', file),
        `module.exports = ${JSON.stringify(content)}`,
        'utf-8',
        {},
      );
    } catch (error) {
      log(`skip ${file}`);
    }
  }
};