@canonical/jujulib
Version:
Juju API client
46 lines (40 loc) • 1.29 kB
text/typescript
import { mkdirSync, writeFileSync } from "fs";
import { join } from "path";
import { facadeFolderName } from "../generator.js";
import { FacadeList } from "./types.js";
function facadeIndexTS(facadeName: string, versions: number[]): string {
return `import { GenericFacade } from "../../types";
${versions
.map(
(facadeVersion) =>
`import ${facadeName}V${facadeVersion} from "./${facadeName}V${facadeVersion}.js";`
)
.join("\n")}
${versions
.map(
(facadeVersion) =>
`export * as ${facadeName}V${facadeVersion} from "./${facadeName}V${facadeVersion}.js";`
)
.join("\n")}
const ${facadeName}: GenericFacade = {
name: "${facadeName}",
versions: [${versions
.map((facadeVersion) => `${facadeName}V${facadeVersion}`)
.join(", ")}],
};
export default ${facadeName};
`;
}
export default function generateFacadeIndexTemplate(
facadesGroupedByName: FacadeList
) {
Object.keys(facadesGroupedByName).forEach((facadeName) => {
const generatedFacadeIndex = facadeIndexTS(
facadeName,
facadesGroupedByName[facadeName].sort()
);
const outputFolder = `api/facades/${facadeFolderName(facadeName)}/`;
mkdirSync(outputFolder, { recursive: true });
writeFileSync(join(outputFolder, "index.ts"), generatedFacadeIndex);
});
}