import * as actionsExec from '@actions/exec'; import {ExecOptions} from '@actions/exec'; export interface ExecResult { success: boolean; stdout: string; stderr: string; } export const exec = async ( command: string, args: string[] = [], silent: boolean, stdin?: string ): Promise => { let stdout: string = ''; let stderr: string = ''; const options: ExecOptions = { silent: silent, ignoreReturnCode: true, input: Buffer.from(stdin || '') }; options.listeners = { stdout: (data: Buffer) => { stdout += data.toString(); }, stderr: (data: Buffer) => { stderr += data.toString(); } }; const returnCode: number = await actionsExec.exec(command, args, options); return { success: returnCode === 0, stdout: stdout.trim(), stderr: stderr.trim() }; };