@constructor-io/constructorio-connect-cli
Version:
CLI tool to enable users to interface with the Constructor Connect Ecosystem
60 lines (59 loc) • 2.9 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.renderTemplateResult = renderTemplateResult;
const core_1 = require("@oclif/core");
const kleur_1 = __importDefault(require("kleur"));
const cli_highlight_1 = __importDefault(require("cli-highlight"));
const json_stringify_pretty_compact_1 = __importDefault(require("json-stringify-pretty-compact"));
const render_tip_1 = require("./render-tip");
function renderTemplateResult(result) {
if (isTemplateFailure(result)) {
renderTemplateError(result);
return;
}
renderTemplateSuccess(result);
}
function isTemplateFailure(result) {
return !!result.error;
}
function renderTemplateSuccess(result) {
core_1.ux.stdout(kleur_1.default.bold(kleur_1.default.green("🏁 Template executed successfully! 🏁 ") + "⬇️ Result ⬇️") + `\n\n${(0, cli_highlight_1.default)((0, json_stringify_pretty_compact_1.default)(result.data), { language: "json" })}`);
}
function renderTemplateError(result) {
core_1.ux.stdout(kleur_1.default.bold(kleur_1.default.red("💥 Error while executing your template: ") + "⬇️ Error ⬇️"));
core_1.ux.stdout();
if (result.error.message) {
core_1.ux.stdout(kleur_1.default.red("Error Message: "), kleur_1.default.yellow(result.error.message));
}
if (result.error.line) {
core_1.ux.stdout(kleur_1.default.red("Line number: "), kleur_1.default.yellow(result.error.line));
}
if (result.error.token) {
core_1.ux.stdout(kleur_1.default.red("Token: "), kleur_1.default.yellow(result.error.token));
}
if (result.error.snippet) {
let highlightedSnippet = (0, cli_highlight_1.default)(result.error.snippet?.join("\n"), {
language: "javascript",
});
// 5 lines => 3 of offset
// 6 lines => 3 of offset
const snippetOffset = Math.ceil(result.error.snippet.length / 2);
const startLine = (result.error.line ?? snippetOffset) - snippetOffset;
// add line numbers to the snippet
highlightedSnippet = highlightedSnippet
.split("\n")
.map((line, i) => kleur_1.default.gray(`${i + 1 + startLine} `) + line)
.join("\n");
core_1.ux.stdout(highlightedSnippet);
core_1.ux.stdout("\n");
(0, render_tip_1.renderTip)([
"The above snippet shows the built template, so line numbers can have a slight offset depending on the provided helpers.",
]);
(0, render_tip_1.renderTip)(["Check for missing ';' or trailing ',' in the above lines."]);
core_1.ux.stdout();
}
core_1.ux.stdout(kleur_1.default.bold(kleur_1.default.red("💥 Error while executing your template: ") + "⬆️ Error ⬆️"));
}