@hashgraph/solo
Version:
An opinionated CLI tool to deploy and manage private Hedera Networks.
56 lines (46 loc) • 1.74 kB
text/typescript
// SPDX-License-Identifier: Apache-2.0
export enum ArchitectureType {
AMD64 = 'amd64',
ARM64 = 'arm64',
}
export class Architecture {
public static readonly NODE_ARCH_X64: string = 'x64';
public static readonly NODE_ARCH_ARM64: string = 'arm64';
public static readonly NODE_ARCH_AARCH64: string = 'aarch64';
public static readonly LINUX_AMD64: string = 'linux/amd64';
public static readonly LINUX_ARM64: string = 'linux/arm64';
public static getArchitecture(rawArchitecture: string = process.arch): ArchitectureType {
switch (rawArchitecture) {
case Architecture.NODE_ARCH_X64: {
return ArchitectureType.AMD64;
}
case Architecture.NODE_ARCH_ARM64:
case Architecture.NODE_ARCH_AARCH64: {
return ArchitectureType.ARM64;
}
default: {
throw new Error(`Unsupported host architecture: ${rawArchitecture}`);
}
}
}
public static getLinuxPlatform(rawArchitecture: string = process.arch): string {
const architecture: ArchitectureType = Architecture.getArchitecture(rawArchitecture);
switch (architecture) {
case ArchitectureType.AMD64: {
return Architecture.LINUX_AMD64;
}
case ArchitectureType.ARM64: {
return Architecture.LINUX_ARM64;
}
}
}
public static isAmd64(rawArchitecture: string = process.arch): boolean {
return Architecture.getArchitecture(rawArchitecture) === ArchitectureType.AMD64;
}
public static isArm64(rawArchitecture: string = process.arch): boolean {
return Architecture.getArchitecture(rawArchitecture) === ArchitectureType.ARM64;
}
public static getRawArchitecture(rawArchitecture: string = process.arch): string {
return rawArchitecture;
}
}