UNPKG

kubricate

Version:

A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.

45 lines (43 loc) 1.45 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.KubectlExecutor = void 0; var _nodeCrypto = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:crypto")); var _promises = /*#__PURE__*/require("node:fs/promises"); var _nodeOs = /*#__PURE__*/require("node:os"); var _nodePath = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:path")); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } // kubectl-executor.ts class KubectlExecutor { kubectlPath; logger; execa; constructor(kubectlPath, logger, execa) { this.kubectlPath = kubectlPath; this.logger = logger; this.execa = execa; } async apply(resource) { const tempPath = this.createTempFilePath(); await (0, _promises.writeFile)(tempPath, JSON.stringify(resource), 'utf8'); this.logger.info(`Applying secret resource with kubectl: ${tempPath}`); try { await this.execa.run(this.kubectlPath, ['apply', '-f', tempPath]); this.logger.log('✅ Applied secret via kubectl'); } catch (err) { this.logger.error(`❌ kubectl apply failed: ${err.message}`); throw err; } } createTempFilePath() { const id = _nodeCrypto.default.randomUUID(); return _nodePath.default.join((0, _nodeOs.tmpdir)(), `kubricate-secret-${id}.json`); } } exports.KubectlExecutor = KubectlExecutor; //# sourceMappingURL=kubectl-executor.js.map