From 5fcfe5719a3ab758660b699e88b59b27cefe93ec Mon Sep 17 00:00:00 2001 From: David Anson Date: Sat, 30 Mar 2024 21:01:13 -0700 Subject: [PATCH] Add "noBanner" configuration option to suppress the display of name/version information at the top of stdout (fixes #291, closes #291). --- README.md | 4 ++ markdownlint-cli2.js | 44 +++++++++++------- schema/markdownlint-cli2-config-schema.json | 5 ++ .../.markdownlint-cli2.jsonc | 3 ++ test/markdownlint-cli2-test.js | 24 ++++++++-- .../.markdownlint-cli2.yaml | 3 ++ .../markdownlint-cli2-test-exec.js.md | 6 +-- .../markdownlint-cli2-test-exec.js.snap | Bin 13805 -> 13804 bytes .../markdownlint-cli2-test-main.js.md | 6 +-- .../markdownlint-cli2-test-main.js.snap | Bin 12875 -> 12875 bytes 10 files changed, 66 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index 940ed302..a6d09aa4 100644 --- a/README.md +++ b/README.md @@ -285,6 +285,10 @@ of the rules within. - Search [`markdown-it-plugins` on npm][markdown-it-plugins] - `modulePaths`: `Array` of `String`s providing additional paths to use when resolving module references (e.g., alternate locations for `node_modules`) + - `noBanner`: `Boolean` value to disable the display of the banner message and + version numbers on `stdout` + - This top-level setting is valid **only** in the directory from which + `markdownlint-cli2` is run - `noInlineConfig`: `Boolean` value to disable the support of [HTML comments][html-comment] within Markdown content - For example: `` diff --git a/markdownlint-cli2.js b/markdownlint-cli2.js index ded56451..129a035f 100755 --- a/markdownlint-cli2.js +++ b/markdownlint-cli2.js @@ -29,6 +29,7 @@ const packageName = "markdownlint-cli2"; const packageVersion = "0.12.1"; const libraryName = "markdownlint"; const libraryVersion = markdownlintLibrary.getVersion(); +const bannerMessage = `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})`; const dotOnlySubstitute = "*.{md,markdown}"; const utf8 = "utf8"; @@ -241,7 +242,10 @@ const processArgv = (argv) => { }; // Show help if missing arguments -const showHelp = (logMessage) => { +const showHelp = (logMessage, showBanner) => { + if (showBanner) { + logMessage(bannerMessage); + } logMessage(`https://github.com/DavidAnson/markdownlint-cli2 Syntax: markdownlint-cli2 glob0 [glob1] [...] [globN] [--config file] [--fix] [--help] @@ -903,10 +907,6 @@ const main = async (params) => { (directory && pathDefault.resolve(directory)) || process.cwd(); const baseDir = posixPath(baseDirSystem); - // Output banner - logMessage( - `${packageName} v${packageVersion} (${libraryName} v${libraryVersion})` - ); // Merge and process args/argv let fixDefault = false; // eslint-disable-next-line unicorn/no-useless-undefined @@ -933,22 +933,24 @@ const main = async (params) => { return true; }); if (shouldShowHelp) { - return showHelp(logMessage); + return showHelp(logMessage, true); } // Read argv configuration file (if relevant and present) let optionsArgv = null; let relativeDir = null; - if (configPath) { - const resolvedConfigPath = - posixPath(pathDefault.resolve(baseDirSystem, configPath)); - optionsArgv = - await readOptionsOrConfig(resolvedConfigPath, fs, noRequire); - relativeDir = pathPosix.dirname(resolvedConfigPath); - } - // Process arguments and get base options - const globPatterns = processArgv(argvFiltered); - const { baseMarkdownlintOptions, dirToDirInfo } = - await getBaseOptions( + let globPatterns = null; + let baseOptions = null; + try { + if (configPath) { + const resolvedConfigPath = + posixPath(pathDefault.resolve(baseDirSystem, configPath)); + optionsArgv = + await readOptionsOrConfig(resolvedConfigPath, fs, noRequire); + relativeDir = pathPosix.dirname(resolvedConfigPath); + } + // Process arguments and get base options + globPatterns = processArgv(argvFiltered); + baseOptions = await getBaseOptions( fs, baseDir, relativeDir, @@ -958,13 +960,19 @@ const main = async (params) => { noGlobs, noRequire ); + } finally { + if (!baseOptions?.baseMarkdownlintOptions.noBanner) { + logMessage(bannerMessage); + } + } if ( ((globPatterns.length === 0) && !nonFileContents) || (configPath === null) ) { - return showHelp(logMessage); + return showHelp(logMessage, false); } // Include any file overrides or non-file content + const { baseMarkdownlintOptions, dirToDirInfo } = baseOptions; const resolvedFileContents = {}; for (const file in fileContents) { const resolvedFile = posixPath(pathDefault.resolve(baseDirSystem, file)); diff --git a/schema/markdownlint-cli2-config-schema.json b/schema/markdownlint-cli2-config-schema.json index def6ad50..bb807b8e 100644 --- a/schema/markdownlint-cli2-config-schema.json +++ b/schema/markdownlint-cli2-config-schema.json @@ -85,6 +85,11 @@ "minLength": 1 } }, + "noBanner": { + "description": "Whether to disable the display of the banner message and version numbers on stdout (only valid at the root) : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.12.1/README.md#markdownlint-cli2jsonc", + "type": "boolean", + "default": false + }, "noInlineConfig": { "description": "Whether to disable support of HTML comments within Markdown content : https://github.com/DavidAnson/markdownlint-cli2/blob/v0.12.1/README.md#markdownlint-cli2jsonc", "type": "boolean", diff --git a/test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc b/test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc index 87cd4992..babf3e7e 100644 --- a/test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc +++ b/test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc @@ -39,6 +39,9 @@ "./modules" ], + // Disable banner message on stdout (only valid at root) + "noBanner": true, + // Disable inline config comments "noInlineConfig": true, diff --git a/test/markdownlint-cli2-test.js b/test/markdownlint-cli2-test.js index 516bb7de..39708993 100644 --- a/test/markdownlint-cli2-test.js +++ b/test/markdownlint-cli2-test.js @@ -6,8 +6,9 @@ const fs = require("node:fs/promises"); const path = require("node:path"); const Ajv = require("ajv"); const test = require("ava").default; -const jsoncParser = require("jsonc-parser"); const { "main": markdownlintCli2 } = require("../markdownlint-cli2.js"); +const jsoncParse = require("../parsers/jsonc-parse.js"); +const yamlParse = require("../parsers/yaml-parse.js"); const FsMock = require("./fs-mock"); const schemaIdVersionRe = /^.*v(?\d+\.\d+\.\d+).*$/u; @@ -98,7 +99,7 @@ test("validateMarkdownlintConfigSchema", async (t) => { ); return Promise.all(files.map(async (file) => { const content = await fs.readFile(file, "utf8"); - const json = jsoncParser.parse(content); + const json = jsoncParse(content); const instanceResult = validateConfigSchema(json); t.truthy( instanceResult, @@ -145,7 +146,7 @@ test("validateMarkdownlintCli2ConfigSchema", async (t) => { ); return Promise.all(files.map(async (file) => { const content = await fs.readFile(file, "utf8"); - const json = jsoncParser.parse(content); + const json = jsoncParse(content); const instanceResult = validateConfigSchema(json); t.truthy( instanceResult, @@ -154,6 +155,23 @@ test("validateMarkdownlintCli2ConfigSchema", async (t) => { })); }); +test("validateExampleObjectsMatch", async (t) => { + t.plan(1); + const jsonExample = jsoncParse( + await fs.readFile( + "./test/markdownlint-cli2-jsonc-example/.markdownlint-cli2.jsonc", + "utf8" + ) + ); + const yamlExample = yamlParse( + await fs.readFile( + "./test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml", + "utf8" + ) + ); + t.deepEqual(jsonExample, yamlExample); +}); + test("absolute path to directory glob", async (t) => { t.plan(1); const argv = [ path.resolve("./test/no-config") ]; diff --git a/test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml b/test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml index eca7edd6..7f53dda7 100644 --- a/test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml +++ b/test/markdownlint-cli2-yaml-example/.markdownlint-cli2.yaml @@ -34,6 +34,9 @@ markdownItPlugins: modulePaths: - "./modules" +# Disable banner message on stdout (only valid at root) +noBanner: true + # Disable inline config comments noInlineConfig: true diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.md b/test/snapshots/markdownlint-cli2-test-exec.js.md index d7bc3566..bd72c57b 100644 --- a/test/snapshots/markdownlint-cli2-test-exec.js.md +++ b/test/snapshots/markdownlint-cli2-test-exec.js.md @@ -1184,8 +1184,7 @@ Generated by [AVA](https://avajs.dev). stderr: `title-case.md:1:1 titlecase-rule Titlecase rule [Title Case: 'Expected # Heading, found # heading']␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Description"]␊ `, - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: '', } ## markdownlint-cli2-jsonc-invalid (exec) @@ -1242,8 +1241,7 @@ Generated by [AVA](https://avajs.dev). stderr: `title-case.md:1:1 titlecase-rule Titlecase rule [Title Case: 'Expected # Heading, found # heading']␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Description"]␊ `, - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: '', } ## markdownlint-cli2-yaml-invalid (exec) diff --git a/test/snapshots/markdownlint-cli2-test-exec.js.snap b/test/snapshots/markdownlint-cli2-test-exec.js.snap index 239496221b54aaa9435ad3c3c222008ca838f4e1..106c5e9b1afda93ee619351ad6b628de7d1ed491 100644 GIT binary patch delta 10390 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 FzW|_+2TlM0 delta 10388 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 diff --git a/test/snapshots/markdownlint-cli2-test-main.js.md b/test/snapshots/markdownlint-cli2-test-main.js.md index 5ab2ff73..5e41059a 100644 --- a/test/snapshots/markdownlint-cli2-test-main.js.md +++ b/test/snapshots/markdownlint-cli2-test-main.js.md @@ -1184,8 +1184,7 @@ Generated by [AVA](https://avajs.dev). stderr: `title-case.md:1:1 titlecase-rule Titlecase rule [Title Case: 'Expected # Heading, found # heading']␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Description"]␊ `, - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: '', } ## markdownlint-cli2-jsonc-invalid (main) @@ -1242,8 +1241,7 @@ Generated by [AVA](https://avajs.dev). stderr: `title-case.md:1:1 titlecase-rule Titlecase rule [Title Case: 'Expected # Heading, found # heading']␊ viewme.md:6 MD025/single-title/single-h1 Multiple top-level headings in the same document [Context: "# Description"]␊ `, - stdout: `markdownlint-cli2 vX.Y.Z (markdownlint vX.Y.Z)␊ - `, + stdout: '', } ## markdownlint-cli2-yaml-invalid (main) diff --git a/test/snapshots/markdownlint-cli2-test-main.js.snap b/test/snapshots/markdownlint-cli2-test-main.js.snap index fd8077e7753edeef0a95e5783927cb71826ae26b..c8ca827a2172e5748fc9039dd234e95a88a327a2 100644 GIT binary patch delta 9520 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 delta 9502 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