UNPKG

kubricate

Version:

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

74 lines (73 loc) 2.36 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.GenerateRunner = void 0; var _nodeFs = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:fs")); var _nodePath = /*#__PURE__*/_interopRequireDefault(/*#__PURE__*/require("node:path")); var _constant = /*#__PURE__*/require("../../internal/constant.js"); function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; } class GenerateRunner { options; generateOptions; renderedFiles; logger; constructor(options, generateOptions, renderedFiles, logger) { this.options = options; this.generateOptions = generateOptions; this.renderedFiles = renderedFiles; this.logger = logger; } async run() { if (this.generateOptions.cleanOutputDir) { this.cleanOutputDir(_nodePath.default.join(this.options.root ?? '', this.generateOptions.outputDir)); } const stats = { written: 0 }; this.logger.info(`Rendering with output mode "${this.generateOptions.outputMode}"`); if (this.generateOptions.cleanOutputDir) { this.logger.info(`Cleaning output directory: ${this.options.outDir}`); } this.logger.log(`\nGenerating stacks...`); for (const file of this.renderedFiles) { this.processOutput(file, stats); } if (stats.written === 0) { this.logger.warn(`No files generated.`); return; } this.logger.log(`\n${_constant.MARK_CHECK} Generated ${stats.written} file${stats.written > 1 ? 's' : ''} into "${this.generateOptions.outputDir}/"`); } cleanOutputDir(dir) { if (_nodeFs.default.existsSync(dir)) { _nodeFs.default.rmSync(dir, { recursive: true, force: true }); } } ensureDir(filePath) { const dir = _nodePath.default.dirname(filePath); _nodeFs.default.mkdirSync(dir, { recursive: true }); } processOutput(file, stats) { if (this.options.stdout) { console.log(file.content); return; } const outputPath = _nodePath.default.join(this.options.root ?? '', file.filePath); this.ensureDir(outputPath); _nodeFs.default.writeFileSync(outputPath, file.content); this.logger.log(`${_constant.MARK_BULLET} Written: ${outputPath}`); stats.written++; } } exports.GenerateRunner = GenerateRunner; //# sourceMappingURL=GenerateRunner.js.map