general mindustry schematic tools
Diffstat (limited to 'schem_image/main.js')
| -rwxr-xr-x | schem_image/main.js | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/schem_image/main.js b/schem_image/main.js new file mode 100755 index 0000000..96d0800 --- /dev/null +++ b/schem_image/main.js @@ -0,0 +1,85 @@ +#!/usr/bin/env -S node --no-warnings + +import fs from "fs"; +import { Schematic } from "mindustry-schematic-parser"; +import { ArgumentParser } from "argparse"; +import clipboard from "clipboardy"; + +const parser = new ArgumentParser(); + +parser.add_argument("--base64", "-b", { + nargs: 1, + type: "string", +}); +parser.add_argument("-c", "--clipboard", { + action: "store_true", +}); +parser.add_argument("--file", { + nargs: 1, + type: "string", + action: "store", +}); +parser.add_argument("--image", "-i", { + nargs: 1, + type: "string", + help: "where to output the image", +}); +parser.add_argument("--rename", "-r", { + nargs: "+", + type: "string", + help: "to rename the schematic, and copy the new schematic", +}); +parser.add_argument("--format", "-f", { + action: "store_true", +}); + +let base64; +let file; + +const args = parser.parse_args(); + +base64 = args.base64 ? args.base64[0] : ""; +file = args.file ? args.file[0] : ""; + +if (args.clipboard) { + const clip = clipboard.readSync(); + if (!clip) throw new Error("clipboard empty"); + base64 = clip; +} + +if (!file && !base64) { + throw new Error("file/base64 not specified"); +} + +let schematic; +if (base64) { + schematic = Schematic.decode(base64); +} else if (file) { + const buffer = fs.readFileSync(file); + schematic = Schematic.decode(buffer); +} + +if (args.image) { + const opacity = 0.25; + // save a preview of the schematic + schematic + .render({ + background: false, // disable background + bridges: { + opacity: opacity, + }, + phaseBridges: { + opacity: opacity, + }, + }) + .then((nodeCanvas) => nodeCanvas.toBuffer()) + .then((buffer) => fs.writeFileSync(args.image[0], buffer)); +} + +if (args.rename) { + schematic.name = args.rename.join(" "); + if (args.format) clipboard.write(`\`\`\`${schematic.encode()}\`\`\``); + else clipboard.write(schematic.encode()); +} else if (args.format) clipboard.write(`\`\`\`${schematic.encode()}\`\`\``); + +console.log(schematic.name); |