diff options
| author | Allen Hutchison <[email protected]> | 2025-04-21 17:41:44 -0700 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-04-21 17:41:44 -0700 |
| commit | 1a167b2ea5ef10d0bea66e227bd2148d4934f5b5 (patch) | |
| tree | c1f6732e92dddee97e5aa484671887200e092e75 /packages/cli/src/utils/readStdin.ts | |
| parent | cacf0cc0ef97f781ec742ff883c70ee7b0a04cee (diff) | |
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.
Diffstat (limited to 'packages/cli/src/utils/readStdin.ts')
| -rw-r--r-- | packages/cli/src/utils/readStdin.ts | 27 |
1 files changed, 27 insertions, 0 deletions
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<string> { + 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); + }); + }); +} |
