#!/usr/bin/env node
/**
 * @file
 * Rewrite some Markdown files.
 */

import {readFile, writeFile} from 'node:fs/promises';
import path from 'node:path';
import process from 'node:process';
import {getDirnameFromImportMeta} from '../../sdk.mjs';

const LINKS_BRANCH = process.argv[2] || 'develop';

const __dirname = getDirnameFromImportMeta(import.meta.url);

const rootDirectory = path.resolve(__dirname, '..', '..');
const readmeFile = path.resolve(rootDirectory, 'README.md');
const disclaimerFile = path.resolve(rootDirectory, 'DISCLAIMER.md');

/**
 * Reformat a file.
 * @param {string} filePath Path to the file
 */
const reformat = async (filePath) => {
  const fileContent = await readFile(filePath, 'utf8');
  await writeFile(
    filePath,
    fileContent
      // Replace all CDN links with raw links
      .replaceAll(
        /https:\/\/cdn.simpleicons.org\/(.+)\/000\/fff/g,
        `https://raw.githubusercontent.com/simple-icons/simple-icons/${LINKS_BRANCH}/icons/$1.svg`,
      )
      // Replace all GitHub blockquotes with regular markdown
      // Reference: https://github.com/orgs/community/discussions/16925
      .replaceAll(
        /\[!(NOTE|TIP|IMPORTANT|WARNING|CAUTION)](?!\()/g,
        function (string_, $0) {
          const capital = $0.slice(0, 1);
          const body = $0.slice(1).toLowerCase();
          return `**${capital + body}**`;
        },
      ),
  );
};

await Promise.all([reformat(readmeFile), reformat(disclaimerFile)]);
