61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			61 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # `@actions/exec`
 | |
| 
 | |
| ## Usage
 | |
| 
 | |
| #### Basic
 | |
| 
 | |
| You can use this package to execute your tools on the command line 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](https://github.com/actions/toolkit/blob/d9347d4ab99fd507c0b9104b2cf79fb44fcc827d/packages/exec/src/interfaces.ts#L5):
 | |
| 
 | |
| ```
 | |
| const exec = require('@actions/exec');
 | |
| 
 | |
| const myOutput = '';
 | |
| const 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 use it in conjunction with the `which` function from `@actions/io` to execute tools that are not in the PATH:
 | |
| 
 | |
| ```
 | |
| const exec = require('@actions/exec');
 | |
| const io = require('@actions/io');
 | |
| 
 | |
| const pythonPath: string = await io.which('python', true)
 | |
| 
 | |
| await exec.exec(`"${pythonPath}"`, ['main.py']);
 | |
| ```
 |