k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
50 lines • 1.73 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ManifestSaver = void 0;
const emittery_1 = __importDefault(require("emittery"));
const promises_1 = require("fs/promises");
const path_1 = require("path");
class ManifestSaver extends emittery_1.default {
_options;
_encoder = new TextEncoder();
constructor(_options) {
super();
this._options = _options;
}
_splat(manifests) {
return manifests.join("\n---\n");
}
async prepareOnce() {
await this.emit("purge", {
outdir: this._options.outdir
});
await (0, promises_1.rm)(this._options.outdir, {
force: true,
maxRetries: 2,
retryDelay: 500,
recursive: true
});
await (0, promises_1.mkdir)(this._options.outdir, { recursive: true });
}
async save(origin, manifests) {
const content = this._splat(manifests);
const filename = `${origin.name}`;
const encoded = this._encoder.encode(content);
const outPath = (0, path_1.resolve)(this._options.outdir, filename);
const e = {
filename,
path: outPath,
content: content,
bytes: encoded.byteLength
};
await this.emit("save", e);
await (0, promises_1.mkdir)(this._options.outdir, { recursive: true });
await (0, promises_1.writeFile)((0, path_1.join)(this._options.outdir, filename), encoded);
return e;
}
}
exports.ManifestSaver = ManifestSaver;
//# sourceMappingURL=saver.js.map