< Summary - Envilder Core (TypeScript)

Information
Class: src/envilder/core/application/dispatch/DispatchActionCommandHandler.ts
Assembly: Default
File(s): src/envilder/core/application/dispatch/DispatchActionCommandHandler.ts
Tag: 151_24479375065
Line coverage
88%
Covered lines: 22
Uncovered lines: 3
Coverable lines: 25
Total lines: 88
Line coverage: 88%
Branch coverage
84%
Covered branches: 11
Total branches: 13
Branch coverage: 84.6%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

src/envilder/core/application/dispatch/DispatchActionCommandHandler.ts

#LineLine coverage
 1import { inject, injectable } from 'inversify';
 2import { InvalidArgumentError } from '../../domain/errors/DomainErrors.js';
 3import { OperationMode } from '../../domain/OperationMode.js';
 4import { TYPES } from '../../types.js';
 5import { PullSecretsToEnvCommand } from '../pullSecretsToEnv/PullSecretsToEnvCommand.js';
 6import type { PullSecretsToEnvCommandHandler } from '../pullSecretsToEnv/PullSecretsToEnvCommandHandler.js';
 7import { PushEnvToSecretsCommand } from '../pushEnvToSecrets/PushEnvToSecretsCommand.js';
 8import type { PushEnvToSecretsCommandHandler } from '../pushEnvToSecrets/PushEnvToSecretsCommandHandler.js';
 9import { PushSingleCommand } from '../pushSingle/PushSingleCommand.js';
 10import type { PushSingleCommandHandler } from '../pushSingle/PushSingleCommandHandler.js';
 11import type { DispatchActionCommand } from './DispatchActionCommand.js';
 12
 13@injectable()
 814export class DispatchActionCommandHandler {
 15  constructor(
 16    @inject(TYPES.PullSecretsToEnvCommandHandler)
 2017    private readonly pullHandler: PullSecretsToEnvCommandHandler,
 18    @inject(TYPES.PushEnvToSecretsCommandHandler)
 2019    private readonly pushHandler: PushEnvToSecretsCommandHandler,
 20    @inject(TYPES.PushSingleCommandHandler)
 2021    private readonly pushSingleHandler: PushSingleCommandHandler,
 22  ) {}
 23
 24  async handleCommand(command: DispatchActionCommand): Promise<void> {
 1025    switch (command.mode) {
 26      case OperationMode.PUSH_SINGLE:
 227        await this.handlePushSingle(command);
 228        break;
 29      case OperationMode.PUSH_ENV_TO_SECRETS:
 230        await this.handlePush(command);
 231        break;
 32      case OperationMode.PULL_SECRETS_TO_ENV:
 633        await this.handlePull(command);
 434        break;
 35      default:
 036        await this.handlePull(command);
 037        break;
 38    }
 39  }
 40
 41  private async handlePushSingle(
 42    command: DispatchActionCommand,
 43  ): Promise<void> {
 244    if (!command.key || !command.value || !command.secretPath) {
 045      throw new InvalidArgumentError(
 46        'Missing required arguments: --key, --value, and --secret-path',
 47      );
 48    }
 49
 250    const pushSingleCommand = PushSingleCommand.create(
 51      command.key,
 52      command.value,
 53      command.secretPath,
 54    );
 55
 256    await this.pushSingleHandler.handle(pushSingleCommand);
 57  }
 58
 59  private async handlePush(command: DispatchActionCommand): Promise<void> {
 260    this.validateMapAndEnvFileOptions(command);
 61
 262    const pushEnvToSecretsCommand = PushEnvToSecretsCommand.create(
 63      command.map as string,
 64      command.envfile as string,
 65    );
 66
 267    await this.pushHandler.handle(pushEnvToSecretsCommand);
 68  }
 69
 70  private async handlePull(command: DispatchActionCommand): Promise<void> {
 671    this.validateMapAndEnvFileOptions(command);
 72
 673    const pullSecretsToEnvCommand = PullSecretsToEnvCommand.create(
 74      command.map as string,
 75      command.envfile as string,
 76    );
 77
 678    await this.pullHandler.handle(pullSecretsToEnvCommand);
 79  }
 80
 81  private validateMapAndEnvFileOptions(command: DispatchActionCommand): void {
 882    if (!command.map || !command.envfile) {
 283      throw new InvalidArgumentError(
 84        'Missing required arguments: --map and --envfile',
 85      );
 86    }
 87  }
 88}