From 1a167b2ea5ef10d0bea66e227bd2148d4934f5b5 Mon Sep 17 00:00:00 2001 From: Allen Hutchison Date: Mon, 21 Apr 2025 17:41:44 -0700 Subject: Piped input (#104) * New method for handling stdin. Bypass Ink, and output to stdout. Makes the CLI work like a typical Unix application when called with piped input. * Fixing a few post-merge errors. * Format code. * Clean up lint and format errors. --- packages/cli/src/utils/readStdin.ts | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 packages/cli/src/utils/readStdin.ts (limited to 'packages/cli/src/utils') diff --git a/packages/cli/src/utils/readStdin.ts b/packages/cli/src/utils/readStdin.ts new file mode 100644 index 00000000..d890aa2c --- /dev/null +++ b/packages/cli/src/utils/readStdin.ts @@ -0,0 +1,27 @@ +/** + * @license + * Copyright 2025 Google LLC + * SPDX-License-Identifier: Apache-2.0 + */ + +export async function readStdin(): Promise { + return new Promise((resolve, reject) => { + let data = ''; + process.stdin.setEncoding('utf8'); + + process.stdin.on('readable', () => { + let chunk; + while ((chunk = process.stdin.read()) !== null) { + data += chunk; + } + }); + + process.stdin.on('end', () => { + resolve(data); + }); + + process.stdin.on('error', (err) => { + reject(err); + }); + }); +} -- cgit v1.2.3