import 'dart:io'; import 'package:libac_dart/argparse/Parser.dart'; import 'package:simplehelpertools/constants.dart'; import 'package:libac_dart/argparse/Args.dart'; import 'package:libac_dart/argparse/Builder.dart'; import 'package:libac_dart/argparse/CLIHelper.dart'; import 'package:libac_dart/argparse/types/Bool.dart'; import 'package:libac_dart/argparse/types/String.dart'; import 'package:libac_dart/nbt/NbtIo.dart'; import 'package:libac_dart/nbt/SnbtIo.dart'; import 'package:libac_dart/nbt/impl/CompoundTag.dart'; var HEADER = "snbt2nbt\nCopyright Piccari Creations 2024-2025 - Tara Piccari\nVersion: ${HelperConsts.NBT_VERSION}\nPurpose: Converts the more readable stringified NBT to Named Binary Tag format\n\n"; void main(List args) async { Arguments usage = ArgumentsBuilder.builder() .withArgument(BoolArgument(name: "help")) .withArgument(StringArgument(name: "input", value: "%")) .withArgument(StringArgument(name: "out", value: "%")) .withArgument(BoolArgument(name: "compress")) .build(); Arguments defaults = Arguments(); Arguments vArgs = ArgumentParser.parse(args); if (vArgs.hasArg("help") || vArgs.count == 0) { print(HEADER); print(ArgumentHelpers.generateHelpMessage( usage.getArgumentsList(), "snbt2nbt")); } else { if (!vArgs.hasArg("input")) { print(HEADER); print("Missing required argument: input"); exit(1); } String file = vArgs.getArg("input")!.getValue() as String; CompoundTag ct = await SnbtIo.readFromFile(file) as CompoundTag; if (!vArgs.hasArg("out")) { print("Missing required argument: out"); exit(2); } else { if (!vArgs.hasArg("compress")) { NbtIo.write(vArgs.getArg("out")!.getValue() as String, ct); } else { NbtIo.writeCompressed(vArgs.getArg("out")!.getValue() as String, ct); } print("Wrote NBT output to file"); } } }