Skip to content

Commit

Permalink
Root Check CLI Removal
Browse files Browse the repository at this point in the history
The API for it I want to demo with, the CLI is another story though, so I will look at that another time.

#54
  • Loading branch information
Offroaders123 committed Nov 24, 2024
1 parent 5935708 commit 25e6885
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 19 deletions.
5 changes: 0 additions & 5 deletions src/bin/args.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,6 @@ const ENDIAN_PATTERN = /^--endian=/;
const COMPRESSION_PATTERN = /^--compression=/;
const BEDROCK_LEVEL_PATTERN = /^(?:--bedrock-level$|--bedrock-level=)/;
const SPACE_PATTERN = /^--space=/;
const ROOT_CHECK_PATTERN = /^--anyroot$/;

export const getFile = (args: string[]): string | true => !process.stdin.isTTY
? true
Expand All @@ -27,7 +26,6 @@ for (const arg of args) {
case COMPRESSION_PATTERN.test(arg):
case BEDROCK_LEVEL_PATTERN.test(arg):
case SPACE_PATTERN.test(arg):
case ROOT_CHECK_PATTERN.test(arg):
break;
default:
throw new TypeError(`Unexpected argument '${arg}'`);
Expand All @@ -44,9 +42,6 @@ export const getSNBT = (args: string[]): boolean => args
export const getJSON = (args: string[]): boolean => args
.some(arg => JSON_PATTERN.test(arg));

export const getRootCheck = (args: string[]): boolean => !args
.some(arg => ROOT_CHECK_PATTERN.test(arg));

const getRootName = (args: string[]): NBTDataOptions["rootName"] => args
.find(arg => ROOT_NAME_PATTERN.test(arg))
?.replace(ROOT_NAME_PATTERN, "");
Expand Down
25 changes: 12 additions & 13 deletions src/bin/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ import { readFile } from "node:fs/promises";
import { inspect } from "node:util";
import { read, write, parse, stringify, NBTData } from "../index.js";
import { readStdin, writeStdout } from "./input.js";
import { getFile, getNBT, getSNBT, getJSON, getRootCheck, getFormat, getSpace } from "./args.js";
import { getFile, getNBT, getSNBT, getJSON, getFormat, getSpace } from "./args.js";

import type { RootTag } from "../index.js";

Expand All @@ -19,7 +19,6 @@ process.on("uncaughtException", error => {
const file = getFile(args);
const nbt = getNBT(args);
const snbt = getSNBT(args);
const rootCheck = getRootCheck(args);
const json = getJSON(args);
const format = getFormat(args);
const space = getSpace(args);
Expand All @@ -29,12 +28,12 @@ process.on("uncaughtException", error => {
let input: RootTag | NBTData;

if (file === true) {
input = await readBuffer(buffer, rootCheck);
input = await readBuffer(buffer);
} else {
try {
input = await readExtension(buffer, file, rootCheck);
input = await readExtension(buffer, file);
} catch {
input = await readBuffer(buffer, rootCheck);
input = await readBuffer(buffer);
}
}

Expand All @@ -48,27 +47,27 @@ process.on("uncaughtException", error => {
const result: string | Uint8Array = json
? `${JSON.stringify(output.data, null, space)}\n`
: snbt
? `${stringify(output, { space, rootCheck })}\n`
: await write(output, { rootCheck });
? `${stringify(output, { space })}\n`
: await write(output);
await writeStdout(result);

async function readExtension(buffer: Buffer, file: string, rootCheck: boolean): Promise<RootTag | NBTData> {
async function readExtension(buffer: Buffer, file: string): Promise<RootTag | NBTData> {
const extension: string = extname(file);
switch (extension) {
case ".json": return JSON.parse(buffer.toString("utf-8")) as RootTag;
case ".snbt": return parse(buffer.toString("utf-8"), rootCheck);
default: return read(buffer, { rootCheck });
case ".snbt": return parse(buffer.toString("utf-8"));
default: return read(buffer);
}
}

async function readBuffer(buffer: Buffer, rootCheck: boolean): Promise<RootTag | NBTData> {
async function readBuffer(buffer: Buffer): Promise<RootTag | NBTData> {
try {
return JSON.parse(buffer.toString("utf-8")) as RootTag;
} catch {
try {
return parse(buffer.toString("utf-8"), rootCheck);
return parse(buffer.toString("utf-8"));
} catch {
return read(buffer, { rootCheck });
return read(buffer);
}
}
}
2 changes: 1 addition & 1 deletion test/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ const options: ReadAdjacentOptions = {
const nbts: NBTData[] = await Array.fromAsync(readAdjacent(data, options));
console.log(nbts);

interface ReadAdjacentOptions extends Omit<ReadOptions, "strict"> {}
interface ReadAdjacentOptions extends Omit<ReadOptions, "strict" | "rootCheck"> {}

async function* readAdjacent<T extends RootTagLike = RootTag>(data: Uint8Array, options: ReadAdjacentOptions): AsyncGenerator<NBTData<T>, void, void> {
let byteOffset: number = 0;
Expand Down

0 comments on commit 25e6885

Please sign in to comment.