1
0
Fork 0
toolkit/packages/exec
Oliver Ford 7c60c0037a
Fix tool output mangled with spawned cmd string
Presently if the exec'd tool is expected to produce an output (i.e. to
write to stdout) that can be consumed in a Unix pipeline, assigned to a
variable, or similar; the `silent` option must be set in order to avoid
the output being mangled by `@actions/exec` to include the full command
string that it spawns (and then re-writing out from the provided stdout
listener).

This commit writes the spawned command string to stderr instead of
stdout, as would be expected for logging/debug information as opposed to
consumable output data.

Closes #649.
2023-10-26 17:35:31 +01:00
..
__tests__ Audit Fix (#1480) 2023-08-03 16:36:11 -04:00
src Fix tool output mangled with spawned cmd string 2023-10-26 17:35:31 +01:00
LICENSE.md Add License.md to all npm packages (#548) 2020-08-25 16:26:50 -04:00
README.md remove misleading verbiage (#258) 2019-12-16 12:43:21 -05:00
RELEASES.md Glob 0.3.0 release (#1056) 2022-04-18 15:49:18 -04:00
package-lock.json Glob 0.3.0 release (#1056) 2022-04-18 15:49:18 -04:00
package.json Glob 0.3.0 release (#1056) 2022-04-18 15:49:18 -04:00
tsconfig.json Add exec (#10) 2019-05-28 15:21:45 -04:00

README.md

@actions/exec

Usage

Basic

You can use this package to execute tools in a cross platform way:

const exec = require('@actions/exec');

await exec.exec('node index.js');

Args

You can also pass in arg arrays:

const exec = require('@actions/exec');

await exec.exec('node', ['index.js', 'foo=bar']);

Output/options

Capture output or specify other options:

const exec = require('@actions/exec');

let myOutput = '';
let myError = '';

const options = {};
options.listeners = {
  stdout: (data: Buffer) => {
    myOutput += data.toString();
  },
  stderr: (data: Buffer) => {
    myError += data.toString();
  }
};
options.cwd = './lib';

await exec.exec('node', ['index.js', 'foo=bar'], options);

Exec tools not in the PATH

You can specify the full path for tools not in the PATH:

const exec = require('@actions/exec');

await exec.exec('"/path/to/my-tool"', ['arg1']);