diff --git a/README.md b/README.md index d0a551a..59a4e13 100644 --- a/README.md +++ b/README.md @@ -12,6 +12,7 @@ build-packs * `-d` or `--data` - The data directory containing the data files. Defailts to data. * `-r` or `--revision` - The revision/version. Defaults to `git rev-parse --short HEAD` if .git exists, else required. * `-i` or `--info` - The info file. Defaults to info.json. +* `-v` or `--version` - Only compile this version. ### Info File An `info.json` file should be present in the input directory. This file should contain the following fields: diff --git a/index.ts b/index.ts index 8039742..c548b1b 100644 --- a/index.ts +++ b/index.ts @@ -30,7 +30,7 @@ interface Info { } -const { values: { indir: inDir, data: dataDir, revision: rev, outdir: outDir, info: infoPath } } = parseArgs({ +const { values: { indir: inDir, data: dataDir, revision: rev, outdir: outDir, info: infoPath, version: onlyVersion } } = parseArgs({ args: Bun.argv, options: { indir: { @@ -56,6 +56,10 @@ const { values: { indir: inDir, data: dataDir, revision: rev, outdir: outDir, in type: "string", default: "info.json" }, + version: { + type: "string", + short: "v" + } }, strict: true, allowPositionals: true @@ -100,6 +104,10 @@ const tempDir = await mkdtemp(`${tmpdir()}/${info.name.toLowerCase().replaceAll( console.log("Temporary Directory:", tempDir); let totalSize = 0; async function createVersion(mcVersion: string, packFormat: number) { + if (onlyVersion && mcVersion !== onlyVersion) { + return; + } + let dataDir = data; if (info.overrides) { const override = info.overrides[mcVersion]; @@ -147,18 +155,21 @@ for (const [mcVersion, packFormat] of info.versions) { await rm(tempDir, { recursive: true, force: true }); console.log("Total size: %s", prettyBytes(totalSize)); - -for (const ex of info.exports) { - const name = (ex[0] === "all" ? info.name : `${info.name}-${ex.join("-")}`).replaceAll(" ", ""); - console.log("Exporting %s", name); - const zip = new AdmZip(); - const versions = ex[0] === "all" ? info.versions.map(([mcVersion]) => mcVersion) : ex; - for (const version of versions) { - zip.addLocalFile(`${dist}/${info.name.replaceAll(" ", "")}-${version}.zip`); +if (onlyVersion) { + console.log("Skipping exports due to version filter"); +} else { + for (const ex of info.exports) { + const name = (ex[0] === "all" ? info.name : `${info.name}-${ex.join("-")}`).replaceAll(" ", ""); + console.log("Exporting %s", name); + const zip = new AdmZip(); + const versions = ex[0] === "all" ? info.versions.map(([mcVersion]) => mcVersion) : ex; + for (const version of versions) { + zip.addLocalFile(`${dist}/${info.name.replaceAll(" ", "")}-${version}.zip`); + } + await zip.writeZipPromise(`${dist}/${name}.zip`); + const { size } = await stat(`${dist}/${name}.zip`); + console.log("%s exported, size: %s", name, prettyBytes(size)); } - await zip.writeZipPromise(`${dist}/${name}.zip`); - const { size } = await stat(`${dist}/${name}.zip`); - console.log("%s exported, size: %s", name, prettyBytes(size)); } console.log("Done");