From ee9841a1d2e037c99625d618a76c001b55b8c844 Mon Sep 17 00:00:00 2001 From: Donovan Daniels Date: Thu, 30 May 2024 14:09:46 -0500 Subject: [PATCH] Allow overriding common directory for singular versions --- index.ts | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/index.ts b/index.ts index ae4a799..9c4bb68 100644 --- a/index.ts +++ b/index.ts @@ -16,6 +16,9 @@ import type { PathLike } from "node:fs"; import { tmpdir } from "node:os"; import { cwd } from "node:process"; import { resolve } from "node:path"; +interface Override { + common?: string; +} interface Info { description: string; @@ -23,6 +26,7 @@ interface Info { name: string; url: string; versions: Array<[mcVersion: string, packFormat: number]>; + overrides?: Record; } @@ -51,7 +55,7 @@ const { values: { indir: inDir, common: commonDir, revision: rev, outdir: outDir info: { type: "string", default: "info.json" - } + }, }, strict: true, allowPositionals: true @@ -96,6 +100,17 @@ const tempDir = await mkdtemp(`${tmpdir()}/${info.name.toLowerCase().replaceAll( console.log("Temporary Directory:", tempDir); let totalSize = 0; async function createVersion(mcVersion: string, packFormat: number) { + let commonDir = common; + if (info.overrides) { + const override = info.overrides[mcVersion]; + if (override?.common) { + commonDir = resolve(dir, override.common); + if (!await directoryExists(commonDir)) { + console.log(`[Override:${mcVersion}] Specified common directory "${override.common}" (${commonDir}) does not exist.`); + process.exit(1); + } + } + } console.log("Building %s (pf: %d)", mcVersion, packFormat); const mcmeta = { pack: { @@ -111,8 +126,8 @@ async function createVersion(mcVersion: string, packFormat: number) { await mkdir(`${tempDir}/${mcVersion}`); await writeFile(`${tempDir}/${mcVersion}/pack.mcmeta`, JSON.stringify(mcmeta, null, 4)); - await copyFile(`${common}/pack.png`, `${tempDir}/${mcVersion}/pack.png`); - await cp(`${common}/assets`, `${tempDir}/${mcVersion}/assets`, { recursive: true }); + await copyFile(`${commonDir}/pack.png`, `${tempDir}/${mcVersion}/pack.png`); + await cp(`${commonDir}/assets`, `${tempDir}/${mcVersion}/assets`, { recursive: true }); const zip = new AdmZip(); await zip.addLocalFolderPromise(`${tempDir}/${mcVersion}`, {}); await zip.writeZipPromise(`${dist}/${info.name.replaceAll(" ", "")}-${mcVersion}.zip`);