/**
 * @fileoverview
 * Updates the CDN URLs in the README.md to match the major version in the
 * NPM package manifest. Does nothing if the README.md is already up-to-date.
 */

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

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

const rootDir = path.resolve(__dirname, '..', '..');
const packageJsonFile = path.resolve(rootDir, 'package.json');
const readmeFile = path.resolve(rootDir, 'README.md');

const getMajorVersion = (semVerVersion) => {
  const majorVersionAsString = semVerVersion.split('.')[0];
  return parseInt(majorVersionAsString);
};

const getManifest = async () => {
  const manifestRaw = await fs.readFile(packageJsonFile, 'utf-8');
  return JSON.parse(manifestRaw);
};

const updateVersionInReadmeIfNecessary = async (majorVersion) => {
  let content = await fs.readFile(readmeFile, 'utf8');

  content = content.replace(
    /simple-icons@v[0-9]+/g,
    `simple-icons@v${majorVersion}`,
  );

  await fs.writeFile(readmeFile, content);
};

const main = async () => {
  try {
    const manifest = await getManifest();
    const majorVersion = getMajorVersion(manifest.version);
    await updateVersionInReadmeIfNecessary(majorVersion);
  } catch (error) {
    console.error('Failed to update CDN version number:', error);
    process.exit(1);
  }
};

await main();