diff --git a/docs/package-specs.md b/docs/package-specs.md index b318251e..712b699e 100644 --- a/docs/package-specs.md +++ b/docs/package-specs.md @@ -13,21 +13,24 @@ export function warning(message: string): void export function error(message: string): void /** - * Interface for exportVariable options + * sets env variable for this action and future actions in the job + * @param name the name of the variable to set + * @param val the value of the variable */ -export interface ExportOptions { - /** Optional. Whether the variable should be marked as secret (will be masked from logs). Defaults to false */ - isSecret?: bool; -} +export function exportVariable(name: string, val: string): void /** - * sets env variable for this action and future actions in the job - * - * @param name the name of the variable to set - * @param val the value of the variable - * @param options optional. See ExportOptions. + * exports the variable and registers a secret which will get masked from logs + * @param name the name of the variable to set + * @param val value of the secret */ -export function exportVariable(name: string, val: string, options?: ExportOptions): void +export function exportSecret(name: string, val: string): void + +/** + * Prepends inputPath to the PATH + * @param inputPath + */ +export function addPath(inputPath: string): void /** * Interface for getInput options @@ -197,10 +200,4 @@ export async function cacheDir(sourceDir: string, tool: string, version: string, * @param arch optional arch. defaults to arch of computer */ export function find(toolName: string, versionSpec: string, arch?: string): string - -/** - * Prepends inputPath to the PATH - * @param inputPath - */ -export function addPath(inputPath: string): void ``` diff --git a/packages/core/__tests__/lib.test.ts b/packages/core/__tests__/lib.test.ts index b1f638c8..49f42062 100644 --- a/packages/core/__tests__/lib.test.ts +++ b/packages/core/__tests__/lib.test.ts @@ -1,5 +1,6 @@ import {ExitCode} from '@actions/exit' import * as os from 'os' +import * as path from 'path' import * as core from '../src/core' /* eslint-disable @typescript-eslint/unbound-method */ @@ -11,6 +12,7 @@ const testEnvVars = { 'my secret': '', 'special char secret \r\n];': '', 'my secret2': '', + PATH: `path1${path.delimiter}path2`, // Set inputs INPUT_MY_INPUT: 'val', @@ -78,6 +80,14 @@ describe('@actions/core', () => { ]) }) + it('prependPath produces the correct commands and sets the env', () => { + core.addPath('myPath') + expect(process.env['PATH']).toBe( + `myPath${path.delimiter}path1${path.delimiter}path2` + ) + assertWriteCalls([`##[add-path]myPath${os.EOL}`]) + }) + it('getInput gets non-required input', () => { expect(core.getInput('my input')).toBe('val') }) diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index f63ef1c6..7e3d7e0d 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -1,6 +1,8 @@ import {ExitCode} from '@actions/exit' import {issue, issueCommand} from './command' +import * as path from 'path' + /** * Interface for getInput options */ @@ -33,6 +35,15 @@ export function exportSecret(name: string, val: string): void { issueCommand('set-secret', {}, val) } +/** + * Prepends inputPath to the PATH (for this action and future actions) + * @param inputPath + */ +export function addPath(inputPath: string): void { + issueCommand('add-path', {}, inputPath) + process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}` +} + /** * Gets the value of an input. The value is also trimmed. *