All files / src/Instance/Configuration ArgMap.ts

90.9% Statements 10/11
85.71% Branches 6/7
75% Functions 3/4
90.9% Lines 10/11

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51                                          8x 8x 29x     9x 9x 5x   4x 4x   9x                   23x              
/**
 * @internal
 * ArgMap exports a map of arguments passed to the application
 * @module ArgMap
 * @category Configuration
 */
 
/**
 * Class representing a map of command line arguments
 */
export class CommandLineArgumentsMap {
  /**
   * Map of arguments name and values
   */
  private argumentsMap: Map<string, string>;
 
  /**
   * Creates an instance of CommandLineArgumentsMap.
   * @param {string[]} [commandLineArguments=process.argv] - Array of command line arguments
   */
  constructor(commandLineArguments: string[] = process.argv) {
    this.argumentsMap = new Map<string, string>();
    commandLineArguments.forEach((argument, index) => {
      if (argument.startsWith("--")) {
        let name: string;
        let value: string;
        argument = argument.slice(2);
        if (argument.includes("=")) {
          [name, value] = argument.split("=").slice(0, 2);
        } else {
          name = argument;
          value = commandLineArguments[index + 1] || "";
        }
        this.argumentsMap.set(name, value);
      }
    });
  }
  /**
   * Gets the value of the specified argument
   * @param {string} arg - argument name
   * @returns {(string | undefined)} - argument value or undefined
   */
  get(arg: string): string | undefined {
    return this.argumentsMap.get(arg);
  }
 
  public forEach(callback: (value: string, key: string) => void): void {
    this.argumentsMap.forEach(callback);
  }
}