@goldstack/infra-hetzner
Version:
Utilities to work with Hetzner infrastructure via the cli.
82 lines • 3.39 kB
JavaScript
;
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 utils_config_1 = require("@goldstack/utils-config");
const utils_log_1 = require("@goldstack/utils-log");
const utils_package_1 = require("@goldstack/utils-package");
const utils_sh_1 = require("@goldstack/utils-sh");
const fs_1 = __importDefault(require("fs"));
const accountConfigSchema_json_1 = __importDefault(require("./schemas/accountConfigSchema.json"));
const deploymentConfigSchema_json_1 = __importDefault(require("./schemas/deploymentConfigSchema.json"));
const readDeploymentFromPackageConfig = (options) => {
const { deploymentName, path } = options;
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