diff --git a/packages/core/README.md b/packages/core/README.md index cbb9cfcc..56ee5f1e 100644 --- a/packages/core/README.md +++ b/packages/core/README.md @@ -23,6 +23,7 @@ Outputs can be set with `setOutput` which makes them available to be mapped into ```js const myInput = core.getInput('inputName', { required: true }); const myBooleanInput = core.getBooleanInput('booleanInputName', { required: true }); +const myMultilineInput = core.getMultiline('multilineInputName', { required: true }); core.setOutput('outputKey', 'outputVal'); ``` diff --git a/packages/core/__tests__/core.test.ts b/packages/core/__tests__/core.test.ts index dee2c78d..5be8df4e 100644 --- a/packages/core/__tests__/core.test.ts +++ b/packages/core/__tests__/core.test.ts @@ -29,6 +29,8 @@ const testEnvVars = { INPUT_WRONG_BOOLEAN_INPUT: 'wrong', INPUT_WITH_TRAILING_WHITESPACE: ' some val ', + INPUT_MY_INPUT_LIST: 'val1\nval2\nval3', + // Save inputs STATE_TEST_1: 'state_val', @@ -166,6 +168,14 @@ describe('@actions/core', () => { ) }) + it('getMultilineInput works', () => { + expect(core.getMultilineInput('my input list')).toEqual([ + 'val1', + 'val2', + 'val3' + ]) + }) + it('getInput trims whitespace by default', () => { expect(core.getInput('with trailing whitespace')).toBe('some val') }) diff --git a/packages/core/src/core.ts b/packages/core/src/core.ts index 2a8b8fd4..c5c36fa4 100644 --- a/packages/core/src/core.ts +++ b/packages/core/src/core.ts @@ -100,6 +100,25 @@ export function getInput(name: string, options?: InputOptions): string { return val.trim() } +/** + * Gets the values of an multiline input. Each value is also trimmed. + * + * @param name name of the input to get + * @param options optional. See InputOptions. + * @returns string[] + * + */ +export function getMultilineInput( + name: string, + options?: InputOptions +): string[] { + const inputs: string[] = getInput(name, options) + .split('\n') + .filter(x => x !== '') + + return inputs +} + /** * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. * Support boolean input list: `true | True | TRUE | false | False | FALSE` .