angel-manager
Version:
<p align="center"> <img src="angel-manager.webp" alt="Angel Manager" width="300"> </p>
67 lines (61 loc) • 1.98 kB
text/typescript
import { Liquid } from "liquidjs";
import path from "path";
import fs from "fs";
import { BaseCommand, RunnableArgs } from "@core";
const engine = new Liquid();
const renderTemplate = async (
command: BaseCommand,
args: RunnableArgs
): Promise<void> => {
const templatePath = path.join(
args.__dirname,
`src/scaffolding/architecture/${command.templatePath}/index.liquid`
);
const templateContent = fs.readFileSync(templatePath, "utf8");
let fileName: string | number = "";
if (command.file && command.file.name) {
if (typeof command.file.name === "string") {
fileName = command.file.name;
} else if (typeof command.file.name === "object") {
const caseType = command.file.name.case;
const argName = command.file.name.argName;
const isPlural = command.file.name.plural;
const suffix = command.file.name.suffix;
if (argName in args.arguments[caseType]) {
fileName = isPlural
? args.arguments["plural"][caseType][argName]
: args.arguments[caseType][argName];
if (suffix) fileName = fileName + suffix;
} else {
console.warn(
`Warning: The argument "${argName}" does not exist in the defined arguments.`
);
fileName = "undefined";
}
}
} else {
fileName = "undefined";
}
if (command.file?.subDir)
fs.mkdirSync(
`${args.__dirname}/src/${command.destinationPath}/${fileName}`,
{
recursive: true,
}
);
try {
await engine
.parseAndRender(templateContent, args.arguments)
.then((output) => {
const outputPath = path.join(
args.__dirname,
`src/${command.destinationPath}/${command.file?.subDir ? fileName + "/" : ""}${fileName}.${command.file?.extension}`
);
fs.writeFileSync(outputPath, output);
console.log("Template rendered successfully");
});
} catch (err) {
throw err;
}
};
export default renderTemplate;