resolveObjectVariables: async()

in lib/environmentConfigurationResolver.js [74:123]


    resolveObjectVariables: async (object) => {
      let paths = null;
      try {
        paths = identifyPaths(object);
      } catch(parseError) {
        throw parseError;
      }
      const names = Object.getOwnPropertyNames(paths);
      for (let i = 0; i < names.length; i++) {
        const path = names[i];
        const parsed = paths[path];
        const variableName = parsed.hostname;
        let variableValue = provider.get(variableName);

        // Support for default variables
        if (variableValue === undefined && parsed.query && parsed.query.default) {
          variableValue = parsed.query.default;
        }

        // Loose equality "true" for boolean values
        if (parsed.query && parsed.query.trueIf) {
          variableValue = parsed.query.trueIf == /* loose */ variableValue;
        }

        // Cast if a type is set to 'boolean' or 'integer'
        if (parsed.query && parsed.query.type) {
          const currentValue = variableValue;
          switch (parsed.query.type) {
          case 'boolean':
          case 'bool':
            if (currentValue && currentValue !== 'false' && currentValue != '0' && currentValue !== 'False') {
              variableValue = true;
            } else {
              variableValue = false;
            }
            break;

          case 'integer':
          case 'int':
            variableValue = parseInt(currentValue, 10);
            break;

          default:
            throw new Error(`The "type" parameter for the env:// string was set to "${parsed.query.type}", a type that is currently not supported.`);
          }
        }

        objectPath.set(object, path, variableValue);
      }
    },