UNPKG

@hashgraph/solo

Version:

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

95 lines (84 loc) 2.8 kB
/** * SPDX-License-Identifier: Apache-2.0 */ import * as constants from './constants.js'; import {ShellRunner} from './shell_runner.js'; import {Templates} from './templates.js'; import {inject, injectable} from 'tsyringe-neo'; import {patchInject} from './dependency_injection/container_helper.js'; import {InjectTokens} from './dependency_injection/inject_tokens.js'; @injectable() export class Helm extends ShellRunner { private readonly helmPath: string; constructor(@inject(InjectTokens.OsPlatform) private readonly osPlatform?: NodeJS.Platform) { super(); this.osPlatform = patchInject(osPlatform, InjectTokens.OsPlatform, this.constructor.name); this.helmPath = Templates.installationPath(constants.HELM, this.osPlatform); } /** * Prepare a `helm` shell command string * @param action - represents a helm command (e.g. create | install | get ) * @param args - args of the command */ prepareCommand(action: string, ...args: string[]) { let cmd = `${this.helmPath} ${action}`; args.forEach(arg => { cmd += ` ${arg}`; }); return cmd; } /** * Invoke `helm install` command * @param args - args of the command * @returns console output as an array of strings */ install(...args: string[]) { return this.run(this.prepareCommand('install', ...args), true); } /** * Invoke `helm uninstall` command * @param args - args of the command * @returns console output as an array of strings */ uninstall(...args: string[]) { return this.run(this.prepareCommand('uninstall', ...args), true); } /** * Invoke `helm upgrade` command * @param args - args of the command * @returns console output as an array of strings */ upgrade(...args: string[]) { return this.run(this.prepareCommand('upgrade', ...args), true); } /** * Invoke `helm list` command * @param args - args of the command * @returns console output as an array of strings */ list(...args: string[]) { return this.run(this.prepareCommand('list', ...args)); } /** * Invoke `helm dependency` command * @param subCommand - sub-command * @param args - args of the command * @returns console output as an array of strings */ dependency(subCommand: string, ...args: string[]) { return this.run(this.prepareCommand('dependency', subCommand, ...args)); } /** * Invoke `helm repo` command * @param subCommand - sub-command * @param args - args of the command * @returns console output as an array of strings */ repo(subCommand: string, ...args: string[]) { return this.run(this.prepareCommand('repo', subCommand, ...args)); } /** Get helm version */ version(args = ['--short']) { return this.run(this.prepareCommand('version', ...args)); } }