function checkRequiredEnvVarsAndFillOptional()

in config/env.js [11:46]


function checkRequiredEnvVarsAndFillOptional() {
  const envVarsExtension = {};
  const getDefaultValueString = value => value.default
    ? `. ${chalk.white(`${value.default}`)} value will be used`
    : '.';
  const getDescriptionString = value => value.description
    ? `\n         \t${chalk.white(value.description)}\n`
    : '\n';
  const keys = Object.keys(wdlWorkspaceEnvs);
  const errors = [];
  for (let keyIndex = 0; keyIndex < keys.length; keyIndex++) {
    const key = keys[keyIndex];
    const value = wdlWorkspaceEnvs[key];
    if (process.env[key]) { // ENV VARS have the highest priority
      envVarsExtension[key] = process.env[key];
      console.log(`[ INFO  ]\t${key}: ${process.env[key]} (env vars) ${getDescriptionString(value)}`);
    } else if (value.argument && argv[value.argument]) {
      envVarsExtension[key] = argv[value.argument];
      console.log(`[ INFO  ]\t${key}: ${argv[value.argument]} (argument) ${getDescriptionString(value)}`);
    } else {
      if (value.required && !value.default) {
        errors.push(key);
      }
      const chalkFn = value.required ? chalk.red : chalk.yellow;
      const level = value.required ? ' ERROR ' : 'WARNING';
      console.log(chalkFn(`[${level}]\t${key}${value.required ? ' (required) ' : ' '}env var is not set${getDefaultValueString(value)}${getDescriptionString(value)}`));
      if (value.default) {
        envVarsExtension[key] = value.default;
      }
    }
  }
  if (errors.length > 0) {
    throw new Error(`${errors.join(', ')} required env var${errors.length === 1 ? '' : 's'} ${errors.length === 1 ? 'is' : 'are'} not set`);
  }
  return envVarsExtension;
}