UNPKG

@goldstack/infra-hetzner

Version:

Utilities to work with Hetzner infrastructure via the cli.

81 lines 3.36 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.getHetznerUser = exports.createDefaultConfig = exports.writeConfig = exports.readConfig = exports.hasConfig = exports.readDeploymentFromPackageConfig = void 0; const fs_1 = __importDefault(require("fs")); const utils_config_1 = require("@goldstack/utils-config"); const utils_sh_1 = require("@goldstack/utils-sh"); const utils_log_1 = require("@goldstack/utils-log"); const utils_package_1 = require("@goldstack/utils-package"); const accountConfigSchema_json_1 = __importDefault(require("./schemas/accountConfigSchema.json")); const deploymentConfigSchema_json_1 = __importDefault(require("./schemas/deploymentConfigSchema.json")); const readDeploymentFromPackageConfig = (deploymentName, path) => { const packageConfig = (0, utils_package_1.readPackageConfig)(path); const deployment = packageConfig.deployments.find((d) => d.name === deploymentName); if (!deployment) { throw new Error('Cannot find deployment with name: ' + deploymentName); } (0, utils_config_1.validateConfig)(deployment, deploymentConfigSchema_json_1.default, { errorMessage: `Invalid Hetzner deployment ${deploymentName}`, }); return deployment; }; exports.readDeploymentFromPackageConfig = readDeploymentFromPackageConfig; const hasConfig = (path) => { if (!path) { path = (0, utils_config_1.getHetznerConfigPath)('./../../'); } // otherwise check default config file location return fs_1.default.existsSync(path); }; exports.hasConfig = hasConfig; const readConfig = (path) => { if (!path) { path = (0, utils_config_1.getHetznerConfigPath)('./../../'); } // otherwise check default config file location if (!fs_1.default.existsSync(path)) { throw new Error(`Hetzner configuration file does not exist: ${path}.`); } return (0, utils_config_1.parseConfig)((0, utils_sh_1.read)(path), accountConfigSchema_json_1.default, { errorMessage: `Cannot load Hetzner configuration from ${path}`, }); }; exports.readConfig = readConfig; const writeConfig = (config, path) => { if (!path) { path = (0, utils_config_1.getHetznerConfigPath)('./../../'); } (0, utils_sh_1.write)(JSON.stringify(config, null, 2), path); }; exports.writeConfig = writeConfig; const createDefaultConfig = () => { return { users: [], }; }; exports.createDefaultConfig = createDefaultConfig; /** * Obtains Hetzner token from config file or environment variables. */ const getHetznerUser = async (userName, configPath) => { if (process.env.HCLOUD_TOKEN) { (0, utils_log_1.info)('Environment variable HCLOUD_TOKEN defined. This token will be used to access Hetzner API.'); return { name: 'local', config: { token: process.env.HCLOUD_TOKEN, }, }; } const config = (0, exports.readConfig)(configPath); const user = config.users.find((u) => u.name === userName); if (!user) { throw new Error('Cannot find Hetzner user ' + userName); } return user; }; exports.getHetznerUser = getHetznerUser; //# sourceMappingURL=infraHetzner.js.map