import { promisify } from 'util' import { promises } from 'fs' import { exec } from 'child_process' import { v1 as uuidv1 } from 'uuid' import { getDirPath, getDocPath, getTexCmd } from './utils' const execPromise = promisify(exec) async function copyToTemp(id: string, texDocument: string): Promise { const dirPath = getDirPath(id) const docPath = getDocPath(id) await promises.mkdir(dirPath) await promises.writeFile(docPath, texDocument) } async function generateDoc(id: string) { const { cmd, options } = getTexCmd(id) const { stdout, stderr } = await execPromise(cmd, options) stdout.length && console.log('stdout:', stdout) stderr.length && console.error('error: ', stderr) console.log(`PDF ${id} generated`) } export default async function (texDocument: string) { const id = uuidv1() await copyToTemp(id, texDocument) await generateDoc(id) return id }