UNPKG

@argdown/cli

Version:

A command line interface for exporting Argdown files to html, dot or json.

211 lines 7.32 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.handler = exports.builder = exports.desc = exports.command = void 0; const node_1 = require("@argdown/node"); const core_1 = require("@argdown/core"); const tryToInstallImageExport_1 = require("../tryToInstallImageExport"); const runArgdown_1 = require("./runArgdown"); exports.command = "map [inputGlob] [outputDir]"; exports.desc = "export Argdown input as DOT files"; exports.builder = { useHtmlLabels: { alias: "html-labels", describe: "Use HTML node labels", type: "boolean" }, argumentLabelMode: { alias: "argument-labels", choices: [ undefined, core_1.LabelMode.HIDE_UNTITLED, core_1.LabelMode.TITLE, core_1.LabelMode.TEXT ], type: "string", describe: "The method by which argument label content is selected" }, statementLabelMode: { alias: "statement-labels", choices: [ undefined, core_1.LabelMode.HIDE_UNTITLED, core_1.LabelMode.TITLE, core_1.LabelMode.TEXT ], type: "string", describe: "The method by which statement label content is selected" }, statementSelectionMode: { alias: "statement-selection", describe: "The method that determines which statements are inserted as nodes into the map", type: "string", choices: [ undefined, core_1.StatementSelectionMode.ALL, core_1.StatementSelectionMode.WITH_TITLE, core_1.StatementSelectionMode.TOP_LEVEL, core_1.StatementSelectionMode.NOT_USED_IN_ARGUMENT, core_1.StatementSelectionMode.WITH_RELATIONS, core_1.StatementSelectionMode.WITH_MORE_THAN_ONE_RELATION ] }, graphName: { alias: "name", type: "string", describe: "Name of the graph" }, inclusive: { type: "boolean", describe: "Include disconnected nodes." }, rankdir: { type: "string", describe: "Graphviz rankdir setting" }, ratio: { type: "string", describe: "Graphviz ratio setting" }, size: { type: "string", describe: "Graphviz size setting" }, format: { alias: "f", type: "string", describe: "the file format (dot, graphml, svg, pdf, png, jpg, webp). For png, jpg or webp export you have first to install the Argdown image export plugin by running 'npm install -g @argdown/image-export'.", default: "pdf" } }; const handler = async (args) => { let config = await node_1.argdown.loadConfig(args.config); config.dot = config.dot || {}; config.map = config.map || {}; config.group = config.group || {}; config.selection = config.selection || {}; config.color = config.color || {}; const format = args.format || "pdf"; if (format === "pdf") { config.svgToPdf = config.svgToPdf || {}; } else { if (format === "png" || format === "jpg" || format === "webp") { const installed = await (0, tryToInstallImageExport_1.tryToInstallImageExport)(node_1.argdown); if (!installed) { throw new Error(`You are trying to export to ${format} but have not installed the Argdown image export plugin. Please run 'npm install -g @argdown/image-export' first. This will automatically add the plugin to @argdown/cli.`); } } config.saveAs = config.saveAs || {}; } if (args.useHtmlLabels) { config.dot.useHtmlLabels = true; } if (args.argumentLabelMode) { config.map.argumentLabelMode = args.argumentLabelMode; } if (args.statementLabelMode) { config.map.statementLabelMode = args.statementLabelMode; } if (args.statementSelectionMode) { config.selection.statementSelectionMode = args.statementSelectionMode; } if (args.inclusive) { config.selection.excludeDisconnected = false; } if (args.graphName) { config.dot.graphname = args.graphName; } config.dot.graphVizSettings = config.dot.graphVizSettings || {}; if (args.size) { config.dot.graphVizSettings.size = args.size; } if (args.ratio) { config.dot.graphVizSettings.ratio = args.ratio; } if (args.rankdir) { config.dot.graphVizSettings.rankdir = args.rankdir; } if (args.inputGlob) { config.inputPath = args.inputGlob; } if (args.outputDir) { if (format === "pdf") { config.svgToPdf.outputDir = args.outputDir; } else { config.saveAs.outputDir = args.outputDir; } } config.logLevel = args.verbose ? "verbose" : config.logLevel; config.logLevel = args.silent ? "silent" : config.logLevel; config.watch = args.watch || config.watch; config.process = ["load-file", "parse-input"]; config.logParserErrors = args.logParserErrors || config.logParserErrors; if (config.logParserErrors) { config.process.push("log-parser-errors"); } config.process.push("build-model"); config.process.push("build-map"); config.process.push("colorize"); if (format != "graphml") { config.process.push("export-dot"); if (format !== "dot") { config.process.push("export-svg"); } } else { config.process.push("export-graphml"); } if (!args.stdout || args.outputDir) { if (format === "dot") { config.process.push("save-as-dot"); } else if (format === "svg") { config.process.push("save-svg-as-svg"); } else if (format === "graphml") { config.process.push("save-as-graphml"); } else if (format === "pdf") { config.process.push("save-svg-as-pdf"); } else if (format === "png") { config.process.push("export-png"); config.process.push("save-as-png"); } else if (format === "jpg") { config.process.push("export-jpg"); config.process.push("save-as-jpg"); } else if (format === "webp") { config.process.push("export-webp"); config.process.push("save-as-webp"); } } if (args.stdout) { if (format === "dot") { config.process.push("stdout-dot"); } else if (format === "graphml") { config.process.push("stdout-graphml"); } else if (format === "svg") { config.process.push("stdout-svg"); } else if (format === "png") { config.process.push("export-png"); config.process.push("stdout-png"); } else if (format === "jpg") { config.process.push("export-jpg"); config.process.push("stdout-jpg"); } else if (format === "webp") { config.process.push("export-webp"); config.process.push("stdout-webp"); } } await (0, runArgdown_1.runArgdown)(node_1.argdown, config, true, "Map export canceled", "exported", `map to ${format}`); }; exports.handler = handler; //# sourceMappingURL=MapCommand.js.map