k8ts
Version:
Powerful framework for building Kubernetes manifests in TypeScript.
69 lines • 2.99 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.ProgressShower = void 0;
const instruments_1 = require("@k8ts/instruments");
const ora_1 = __importDefault(require("ora"));
const promises_1 = require("timers/promises");
const stage_1 = require("./stage");
function typedOnAny(target, handler) {
return target.onAny((name, ev) => {
return handler({ ...ev, type: name });
});
}
class ProgressShower {
_options;
constructor(_options) {
this._options = _options;
}
async visualize(events) {
const spinner = (0, ora_1.default)({
spinner: "dots",
text: "K8ts is getting ready..."
});
spinner.text = "abc";
let filesWritten = 0;
let lastStage = "start";
const unsub = typedOnAny(events, async (event) => {
switch (event.type) {
case "load":
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Load")} ${(0, instruments_1.attr)(event.isExported ? "exported" : "")} ${event.resource} `;
break;
case "stage":
if (event.stage !== "done") {
return;
}
spinner.text = (0, instruments_1.pretty) `${(0, stage_1.stage)(event.stage)}`;
break;
case "received-file":
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Receive")} ${event.file}`;
break;
case "serialize":
const rsc = instruments_1.ManifestSourceEmbedder.get(event.manifest);
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Serialize")} ${rsc}`;
break;
case "save":
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Save")} ${(0, instruments_1.dest)(event.filename)} (${(0, instruments_1.quantity)(event.bytes, "byte")})`;
break;
case "manifest":
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Manifest")} ${event.resource}`;
break;
case "purge":
spinner.text = (0, instruments_1.pretty) `${(0, instruments_1.verb)("Purge")} ${(0, instruments_1.dest)(event.outdir)}`;
break;
}
if (this._options.waitTransition) {
await (0, promises_1.setTimeout)(this._options.waitTransition);
}
spinner.render();
if (this._options.debug) {
console.log();
}
});
spinner.render();
}
}
exports.ProgressShower = ProgressShower;
//# sourceMappingURL=progress-shower.js.map