// https://kontent.ai/blog/how-to-run-scripts-before-every-build-on-next-js/
import path from "path";
import fs from "fs";
import IScriptParams from "../interfaces/IScriptParams";
import { loadEnvConfig } from "@next/env";

loadEnvConfig(process.cwd());

const runAsync = async () => {
  // find all scripts in subfolder
  const files = fs
    .readdirSync(path.join(__dirname, "pre-build"))
    .filter((file) => file.endsWith(".ts"))
    .sort();
  for (const file of files) {
    const {
      default: defaultFunc,
    }: { default: (params: IScriptParams) => void } = await import(
      `./pre-build/${file}`
    );
    try {
      console.log(`Running pre-build script '${file}'`);
      await defaultFunc({ env: process.env });
    } catch (e) {
      console.error(
        `SCRIPT RUNNER: failed to execute pre-build script '${file}'`
      );
      console.error(e);
    }
  }
};

// Self-invocation async function
(async () => {
  await runAsync();
})().catch((err) => {
  console.error(err);
  throw err;
});

export default function execute() {
  // do nothing
}