UNPKG

@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
"use strict"; 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 ⬆️")); }