UNPKG

@hashgraph/solo

Version:

An opinionated CLI tool to deploy and manage private Hedera Networks.

192 lines 6.93 kB
// SPDX-License-Identifier: Apache-2.0 var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) { var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d; if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc); else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r; return c > 3 && r && Object.defineProperty(target, key, r), r; }; var __metadata = (this && this.__metadata) || function (k, v) { if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v); }; var __param = (this && this.__param) || function (paramIndex, decorator) { return function (target, key) { decorator(target, key, paramIndex); } }; var KindExecutionBuilder_1; import { KindExecution } from './kind-execution.js'; import { InjectTokens } from '../../../core/dependency-injection/inject-tokens.js'; import { patchInject } from '../../../core/dependency-injection/container-helper.js'; import { inject, injectable } from 'tsyringe-neo'; import { ExecutionBuilder } from '../../execution-builder.js'; /** * A builder for creating a kind command execution. */ let KindExecutionBuilder = class KindExecutionBuilder extends ExecutionBuilder { static { KindExecutionBuilder_1 = this; } kindInstallationDirectory; static NAME_MUST_NOT_BE_NULL = 'name must not be null'; static VALUE_MUST_NOT_BE_NULL = 'value must not be null'; /** * The path to the kind executable. */ kindExecutable; /** * The list of subcommands to be used when execute the kind command. */ _subcommands = []; /** * The arguments to be passed to the kind command. */ _arguments = new Map(); /** * The list of options and a list of their one or more values. */ _optionsWithMultipleValues = []; /** * The flags to be passed to the kind command. */ _flags = []; /** * The positional arguments to be passed to the kind command. */ _positionals = []; /** * The environment variables to be set when executing the kind command. */ _environmentVariables = new Map(); /** * Creates a new KindExecutionBuilder instance. */ constructor(kindInstallationDirectory) { super(); this.kindInstallationDirectory = kindInstallationDirectory; this.kindInstallationDirectory = patchInject(kindInstallationDirectory, InjectTokens.KindInstallationDirectory, KindExecutionBuilder_1.name); } executable(kindExecutable) { if (!kindExecutable) { throw new Error('kindExecutable must not be null'); } this.kindExecutable = kindExecutable; return this; } /** * Adds the list of subcommands to the kind execution. * @param commands the list of subcommands to be added * @returns this builder */ subcommands(...commands) { if (!commands || commands.length === 0) { throw new Error('commands must not be null'); } this._subcommands.push(...commands); return this; } /** * Adds an argument to the kind execution. * @param name the name of the argument * @param value the value of the argument * @returns this builder */ argument(name, value) { if (!name) { throw new Error(KindExecutionBuilder_1.NAME_MUST_NOT_BE_NULL); } if (!value) { throw new Error(KindExecutionBuilder_1.VALUE_MUST_NOT_BE_NULL); } this._arguments.set(name, value); return this; } /** * Adds an option with multiple values to the kind execution. * @param name the name of the option * @param value the list of values for the option * @returns this builder */ optionsWithMultipleValues(name, value) { if (!name) { throw new Error(KindExecutionBuilder_1.NAME_MUST_NOT_BE_NULL); } if (!value) { throw new Error(KindExecutionBuilder_1.VALUE_MUST_NOT_BE_NULL); } this._optionsWithMultipleValues.push({ key: name, value }); return this; } /** * Adds a positional argument to the kind execution. * @param value the value of the positional argument * @returns this builder */ positional(value) { if (!value) { throw new Error(KindExecutionBuilder_1.VALUE_MUST_NOT_BE_NULL); } this._positionals.push(value); return this; } /** * Adds an environment variable to the kind execution. * @param name the name of the environment variable * @param value the value of the environment variable * @returns this builder */ environmentVariable(name, value) { if (!name) { throw new Error(KindExecutionBuilder_1.NAME_MUST_NOT_BE_NULL); } if (!value) { throw new Error(KindExecutionBuilder_1.VALUE_MUST_NOT_BE_NULL); } this._environmentVariables.set(name, value); return this; } /** * Adds a flag to the kind execution. * @param flag the flag to be added * @returns this builder */ flag(flag) { if (!flag) { throw new Error('flag must not be null'); } this._flags.push(flag); return this; } /** * Builds the KindExecution instance. * @returns the KindExecution instance */ build() { const command = this.buildCommand(); const environment = { ...process.env }; for (const [key, value] of this._environmentVariables.entries()) { environment[key] = value; } this.prefixPath(environment, this.kindInstallationDirectory); return new KindExecution(command, environment); } /** * Builds the command array for the kind execution. * @returns the command array */ buildCommand() { const command = [`${this.kindExecutable}`, ...this._subcommands, ...this._flags]; for (const [key, value] of this._arguments.entries()) { command.push(`--${key}`, value); } for (const entry of this._optionsWithMultipleValues) { for (const value of entry.value) { command.push(`--${entry.key}`, value); } } command.push(...this._positionals); return command; } }; KindExecutionBuilder = KindExecutionBuilder_1 = __decorate([ injectable(), __param(0, inject(InjectTokens.KindInstallationDirectory)), __metadata("design:paramtypes", [String]) ], KindExecutionBuilder); export { KindExecutionBuilder }; //# sourceMappingURL=kind-execution-builder.js.map