actions/toolkit

getInput empty returned value

y-nk opened this issue · 0 comments

y-nk commented

Describe the bug

When using core.getInput in a composite action, the returned value is empty.

To Reproduce
Steps to reproduce the behavior:

  1. Create a composite action with an input
  2. Use github-script action and try core.getInput on the input
  3. Use the composite action in a workflow
  4. Set the input with a value
  5. See error

Expected behavior

The value should be returned as provided

Additional context

The root cause is known and is on actions/runner side (here) but i think we should so something about it in here too. A warning about missing env var could be a quick win, and avoid people not knowing why it failed.

Proposed implementation

/**
* Gets the value of an input.
* Unless trimWhitespace is set to false in InputOptions, the value is also trimmed.
* Returns an empty string if the value is not defined.
*
* @param name name of the input to get
* @param options optional. See InputOptions.
* @returns string
*/
export function getInput(name: string, options?: InputOptions): string {
const val: string =
process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''
if (options && options.required && !val) {
throw new Error(`Input required and not supplied: ${name}`)
}
if (options && options.trimWhitespace === false) {
return val
}
return val.trim()
}

export function getInput(name: string, options?: InputOptions): string {
  const inputKey = `INPUT_${name.replace(/ /g, '_').toUpperCase()`
    
  const val: string =
    process.env[inputKey] || ''

  if (!(inputKey in process.env)) {
    warn(`the input '${inputKey}' is missing from env`)
  }

  if (options && options.required && !val) {
    throw new Error(`Input required and not supplied: ${name}`)
  }

  if (options && options.trimWhitespace === false) {
    return val
  }

  return val.trim()
}