import * as fs from "node:fs";
import { writeGeneratedFile } from "../helpers/fs";
import logger from "../helpers/logger";
import { generateFileHeader } from "./types/fileHeader";

const FILE_NAME = "index.ts";

export function generateIndexFile(outputDirectory: string) {
  logger.debug(`Generating index file in: ${outputDirectory}`);
  const files = fs.readdirSync(outputDirectory);

  const exportLines = files
    // .filter((file) => file.endsWith(".ts"))
    .filter((file) => file !== FILE_NAME) // Exclude the index.ts file itself
    .map((file) => {
      const baseName = file.replace(/\.ts$/, "");
      return `export * from './${baseName}';`;
    });

  const content = `
${generateFileHeader(FILE_NAME)}
${exportLines.join("\n")}
`;

  writeGeneratedFile(outputDirectory, FILE_NAME, content);
}
