kubricate
Version:
A TypeScript framework for building reusable, type-safe Kubernetes infrastructure — without the YAML mess.
74 lines (73 loc) • 2.36 kB
JavaScript
;
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