Add stdout and stderr outputs

This commit is contained in:
Alexander Lyon 2022-03-04 09:40:16 +00:00
parent 9e120dd99b
commit 03012abe8b
No known key found for this signature in database
GPG key ID: 533E172B9B9D54DF
2 changed files with 28 additions and 3 deletions

View file

@ -17,6 +17,11 @@ inputs:
use-cross:
description: Use cross instead of cargo
default: false
outputs:
stdout:
description: Standard out of the program
stderr:
description: Standard err of the program
runs:
using: 'node12'

View file

@ -5,7 +5,9 @@ import * as core from "@actions/core";
import * as input from "./input";
import { Cargo, Cross } from "@actions-rs/core";
export async function run(actionInput: input.Input): Promise<void> {
export async function run(
actionInput: input.Input
): Promise<{ code: number; stdout: string; stderr: string }> {
let program;
if (actionInput.useCross) {
program = await Cross.getOrInstall();
@ -20,7 +22,23 @@ export async function run(actionInput: input.Input): Promise<void> {
args.push(actionInput.command);
args = args.concat(actionInput.args);
await program.call(args);
let stdout = "";
let stderr = "";
const options = {
listeners: {
stdout: (data: Buffer) => {
stdout += data.toString();
},
stderr: (data: Buffer) => {
stderr += data.toString();
},
},
};
const code = await program.call(args, options);
return { code, stdout, stderr };
}
async function main(): Promise<void> {
@ -30,7 +48,9 @@ async function main(): Promise<void> {
const actionInput = input.get();
try {
await run(actionInput);
const { stdout, stderr } = await run(actionInput);
core.setOutput("stdout", stdout);
core.setOutput("stdout", stderr);
} catch (error) {
core.setFailed((<Error>error).message);
}