import { ChildProcess } from 'child_process'; import { EventEmitter } from 'stream'; export type ShellOutput = { error: undefined | Error; stderr: string; stdout: string; exitCode: number | undefined; exitSignal: NodeJS.Signals | undefined; }; export declare const ShellEmitterEvent: { readonly stdout: "stdout"; readonly stderr: "stderr"; readonly done: "done"; readonly error: "error"; }; export type ShellEmitterEventKey = (typeof ShellEmitterEvent)[keyof typeof ShellEmitterEvent]; export type ShellEmitterListenerMap = { [ShellEmitterEvent.stdout]: [string | Buffer]; [ShellEmitterEvent.stderr]: [string | Buffer]; /** * Exit code and exit signal. Based on the Node.js documentation, either one or the other is * defined, never both at the same time. */ [ShellEmitterEvent.done]: [ exitCode: number | undefined, exitSignal: NodeJS.Signals | undefined ]; [ShellEmitterEvent.error]: [Error]; }; export interface ShellEmitter extends EventEmitter { emit(type: T, ...args: ShellEmitterListenerMap[T]): boolean; on(type: T, listener: (...args: ShellEmitterListenerMap[T]) => void): this; addListener(type: T, listener: (...args: ShellEmitterListenerMap[T]) => void): this; once(type: T, listener: (...args: ShellEmitterListenerMap[T]) => void): this; removeListener(type: T, listener: (...args: ShellEmitterListenerMap[T]) => void): this; off(type: T, listener: (...args: ShellEmitterListenerMap[T]) => void): this; childProcess: ChildProcess; } export declare function streamShellCommand(command: string, cwd?: string, shell?: string, env?: NodeJS.ProcessEnv, hookUpToConsole?: boolean): ShellEmitter; export type RunShellCommandParams = { cwd?: string | undefined; env?: NodeJS.ProcessEnv | undefined; shell?: string | undefined; /** Automatically hook up stdout and stderr printing to the caller's console methods. */ hookUpToConsole?: boolean | undefined; rejectOnError?: boolean | undefined; stdoutCallback?: (stdout: string) => void | Promise | undefined; stderrCallback?: (stderr: string) => void | Promise | undefined; }; export declare function runShellCommand(command: string, options?: RunShellCommandParams): Promise; export declare function printShellCommandOutput(shellOutput: { error?: unknown; stderr?: string; stdout?: string; exitCode?: number; }, withLabels?: boolean, ignoreError?: boolean): void;