UNPKG

arx-level-generator

Version:
55 lines 1.96 kB
import fs from 'node:fs/promises'; import path from 'node:path'; import { generateMetadata } from './MetaData.js'; import { fileExists } from './helpers.js'; export class Manifest { static filename = 'manifest.json'; static getPathToFilename(settings) { return path.resolve(settings.outputDir, Manifest.filename); } static async exists(settings) { const filename = Manifest.getPathToFilename(settings); return await fileExists(filename); } static async read(settings) { const filename = Manifest.getPathToFilename(settings); if (!(await Manifest.exists(settings))) { return undefined; } try { const rawIn = await fs.readFile(filename, 'utf-8'); return JSON.parse(rawIn); } catch (e) { console.error(`[error] Manifest: failed to read or parse "${Manifest.filename}" in "${settings.outputDir}"`); return undefined; } } static async write(settings, files, prettify = false) { const metaData = await generateMetadata(settings); const manifest = { ...metaData, files: files.map((file) => { return file.replace(settings.outputDir, ''); }), }; await fs.writeFile(Manifest.getPathToFilename(settings), prettify ? JSON.stringify(manifest, null, 2) : JSON.stringify(manifest)); } static async uninstall(settings) { if (!(await Manifest.exists(settings))) { return; } const manifest = (await Manifest.read(settings)) ?? { files: [] }; for (const file of manifest.files) { try { await fs.rm(path.resolve(settings.outputDir, file)); } catch (e) { } } try { await fs.rm(Manifest.getPathToFilename(settings)); } catch (e) { } } } //# sourceMappingURL=Manifest.js.map