@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
56 lines (48 loc) • 2.5 kB
text/typescript
// SPDX-License-Identifier: Apache-2.0
import {inject, injectable} from 'tsyringe-neo';
import {InjectTokens} from '../../core/dependency-injection/inject-tokens.js';
import {patchInject} from '../../core/dependency-injection/container-helper.js';
import {BaseCommandDefinition} from './base-command-definition.js';
import {CommandBuilder, CommandGroup, Subcommand} from '../../core/command-path-builders/command-builder.js';
import {NodeCommand} from '../node/index.js';
import {type CommandDefinition} from '../../types/index.js';
import {type SoloLogger} from '../../core/logging/solo-logger.js';
import * as NodeFlags from '../node/flags.js';
()
export class KeysCommandDefinition extends BaseCommandDefinition {
public constructor(
(InjectTokens.SoloLogger) private readonly logger?: SoloLogger,
(InjectTokens.NodeCommand) public readonly nodeCommand?: NodeCommand,
) {
super();
this.nodeCommand = patchInject(nodeCommand, InjectTokens.NodeCommand, this.constructor.name);
this.logger = patchInject(logger, InjectTokens.SoloLogger, this.constructor.name);
}
public static override readonly COMMAND_NAME: string = 'keys';
protected static override readonly DESCRIPTION: string = 'Consensus key generation operations';
public static readonly CONSENSUS_SUBCOMMAND_NAME: string = 'consensus';
private static readonly CONSENSUS_SUBCOMMAND_DESCRIPTION: string =
'Generate unique cryptographic keys (gossip or grpc TLS keys) for the Consensus Node instances.';
public static readonly CONSENSUS_GENERATE: string = 'generate';
public static readonly KEYS_COMMAND: string =
`${KeysCommandDefinition.COMMAND_NAME} ${KeysCommandDefinition.CONSENSUS_SUBCOMMAND_NAME} ${KeysCommandDefinition.CONSENSUS_GENERATE}` as const;
public getCommandDefinition(): CommandDefinition {
return new CommandBuilder(KeysCommandDefinition.COMMAND_NAME, KeysCommandDefinition.DESCRIPTION, this.logger)
.addCommandGroup(
new CommandGroup(
KeysCommandDefinition.CONSENSUS_SUBCOMMAND_NAME,
KeysCommandDefinition.CONSENSUS_SUBCOMMAND_DESCRIPTION,
).addSubcommand(
new Subcommand(
KeysCommandDefinition.CONSENSUS_GENERATE,
'Generates TLS keys required for consensus node communication.',
this.nodeCommand.handlers,
this.nodeCommand.handlers.keys,
NodeFlags.KEYS_FLAGS,
[],
),
),
)
.build();
}
}