mgcrea/node-xlsx

View on GitHub
src/bin/cli.ts

Summary

Maintainability
A
0 mins
Test Coverage
#! /usr/bin/env node
import { writeFile } from "node:fs/promises";
import { build } from "src/index";

const [action = "build", ...args] = process.argv.slice(2);

const readStdin = async (bufferSize?: number): Promise<Buffer> => {
  return new Promise((resolve) => {
    const buffers: Buffer[] = [];
    process.stdin.on("readable", () => {
      const read = process.stdin.read();
      if (read) {
        buffers.push(read);
      }
    });
    process.stdin.on("end", () => {
      resolve(Buffer.concat(buffers, bufferSize));
    });
  });
};

const main = async () => {
  switch (action) {
    case "build": {
      const stdin = JSON.parse((await readStdin()).toString("utf8"));
      const result = build(stdin);
      await writeFile(args[0] || `${process.cwd()}/out.xlsx`, result);
      break;
    }
    default:
      console.log("Sorry, that is not something I know how to do.");
  }
  process.exit(0);
};

main();