diff --git a/action.yml b/action.yml index 599fbce..d86b0b7 100644 --- a/action.yml +++ b/action.yml @@ -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' diff --git a/src/main.ts b/src/main.ts index 0e68de4..0453e9f 100644 --- a/src/main.ts +++ b/src/main.ts @@ -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 { +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 { 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 { @@ -30,7 +48,9 @@ async function main(): Promise { 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).message); }