import path from 'path';
import chokidar from 'chokidar';
import { getStat } from 'recursive-readdir-files';
import { run, DOCS, createHTML, copyCSSFile, copyJSFile } from './index.mjs';

(async () => {
  await run();
  const homeMdPath = path.relative(process.cwd(), 'README.md');
  const cssDirPath = path.relative(process.cwd(), 'scripts/style');
  const jsDirPath = path.relative(process.cwd(), 'scripts/js');
  const watcher = chokidar.watch([DOCS, homeMdPath, cssDirPath, jsDirPath], {
    ignored: /(^|[\/\\])\../, // ignore dotfiles
    persistent: true,
  });

  watcher
    .on('change', async (filepath) => {
      if (filepath.endsWith('.md')) {
        const stats = await getStat(filepath);
        createHTML([stats]);
      }
      if (filepath.endsWith('.css')) {
        copyCSSFile(filepath);
        console.log(`♻️ \x1b[32;1m ${path.relative(cssDirPath, filepath)} \x1b[0m`);
      }
      if (filepath.endsWith('.js')) {
        copyJSFile(filepath);
        console.log(`♻️ \x1b[32;1m ${path.relative(jsDirPath, filepath)} \x1b[0m`);
      }
    })
    .on('error', (error) => console.log(`Watcher error: ${error}`));
})();