campus-tex-cli
Version:
A CLI to quickly generate latex files for presentations or task assignments, using the unofficial template by the University of Stuttgart.
61 lines (60 loc) • 2.01 kB
JavaScript
import fs from "fs/promises";
import { coloredLog } from "../util/coloredLog.js";
import chalk from "chalk";
import { handleArticle } from "./handleArticle.js";
import { existsSync } from "fs";
import { resolve } from "path";
export const injectDataIntoLatex = async ({ fileName, matriculationNumber, templateType, topic, userName, useBibTex, outputDirectory, }) => {
const outputFile = fileName.includes(".tex") ? fileName : `${fileName}.tex`;
let folderName = topic.trim();
if (outputDirectory)
folderName = `${outputDirectory}/${folderName}`;
// Check if target folder already exists
if (existsSync(resolve(folderName))) {
const randomId = Math.floor(Math.random() * 1000);
coloredLog({
text: `Folder ${folderName} already exists. Changing to '${folderName}-${randomId}'.`,
highlight: chalk.yellow("INFO:"),
});
folderName = `${folderName}-${randomId}`;
}
const folderPath = `./${folderName}/styles`;
// Create styles folder
try {
await fs.mkdir(folderPath, { recursive: true });
coloredLog({
text: `Created folder ${folderPath}`,
highlight: chalk.yellow("INFO:"),
});
}
catch (err) {
coloredLog({
text: `${err}`,
highlight: chalk.red("ERROR:"),
});
process.exit(-1);
}
//Handle template type
switch (templateType) {
case "article":
await handleArticle({
folderName,
outputFile,
fileName,
matriculationNumber,
topic,
userName,
useBibTex,
});
break;
case "presentation":
() => {
coloredLog({
text: "Presentation is not supported yet.",
highlight: chalk.red("ERROR: "),
});
process.exit();
};
break;
}
};