Skip to content

Commit

Permalink
#78 feat(access): write basic options parser
Browse files Browse the repository at this point in the history
  • Loading branch information
Andy-K-Sparklight committed Dec 31, 2021
1 parent d550698 commit 09d84cd
Showing 1 changed file with 38 additions and 0 deletions.
38 changes: 38 additions & 0 deletions src/modules/access/OptionsTransform.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
import { readFile, writeFile } from "fs-extra";
import { MinecraftContainer } from "../container/MinecraftContainer";

const OPTIONS_FILE = "options.txt";

export async function parseOptions(
c: MinecraftContainer
): Promise<Map<string, string>> {
const f = c.resolvePath(OPTIONS_FILE);
const d = (await readFile(f)).toString().split("\n");
const out = new Map<string, string>();
d.forEach((v) => {
v = v.trim();
if (v.length === 0 || !v.includes(":")) {
return;
}
const [k, ...p] = v.split(":");
const cv = p.join(":");
out.set(k, cv);
});
return out;
}

// Warning: this will override!
export async function buildOptions(
origin: Map<string, string>,
container: MinecraftContainer
): Promise<void> {
const f = container.resolvePath(OPTIONS_FILE);
const o = [];
for (const [k, v] of origin.entries()) {
if (k.length > 0) {
const c = k + ":" + v; // Value may be empty
o.push(c);
}
}
await writeFile(f, o.join("\n"));
}

0 comments on commit 09d84cd

Please sign in to comment.