From ab80d632cd81b24e34be0170d6a34fa2b296dfdd Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Fri, 11 Jan 2019 16:36:45 -0500 Subject: [PATCH 1/8] Allow user to pass in custom reporter --- index.js | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/index.js b/index.js index 0116a3f..6b63df4 100644 --- a/index.js +++ b/index.js @@ -58,6 +58,9 @@ lint.report = async options => { if (messages.length === 0) { spinner.succeed(); + if (options.customReporter) { + console.log(options.customReporter([])); + } return; } @@ -69,7 +72,12 @@ lint.report = async options => { process.exitCode = 1; file.path = path.basename(file.path); - console.log(vfileReporterPretty([file])); + if (options.customReporter) { + console.log(options.customReporter([file])); + } + else { + console.log(vfileReporterPretty([file])); + } }; module.exports = lint; From 476c884d2e9d36bcc9a4d873ebc65577bae9072e Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Fri, 18 Jan 2019 11:57:58 -0500 Subject: [PATCH 2/8] Linting --- index.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.js b/index.js index 6b63df4..ac4e1d7 100644 --- a/index.js +++ b/index.js @@ -61,6 +61,7 @@ lint.report = async options => { if (options.customReporter) { console.log(options.customReporter([])); } + return; } @@ -74,8 +75,7 @@ lint.report = async options => { file.path = path.basename(file.path); if (options.customReporter) { console.log(options.customReporter([file])); - } - else { + } else { console.log(vfileReporterPretty([file])); } }; From f1dfc7aa6b6610c404f4c2c1bbb1470100d0d6eb Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Fri, 18 Jan 2019 12:02:55 -0500 Subject: [PATCH 3/8] Bump minor version --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index abe0518..ca3370a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "awesome-lint", - "version": "0.8.0", + "version": "0.9.0", "description": "Linter for Awesome lists", "license": "MIT", "repository": "sindresorhus/awesome-lint", From 2cbb3d1cb042b5d6d5db910b8a2cc5ea8e19fc78 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Mon, 11 Feb 2019 21:15:39 +0700 Subject: [PATCH 4/8] Update index.js --- index.js | 2 ++ 1 file changed, 2 insertions(+) diff --git a/index.js b/index.js index ac4e1d7..428128b 100644 --- a/index.js +++ b/index.js @@ -58,6 +58,7 @@ lint.report = async options => { if (messages.length === 0) { spinner.succeed(); + if (options.customReporter) { console.log(options.customReporter([])); } @@ -73,6 +74,7 @@ lint.report = async options => { process.exitCode = 1; file.path = path.basename(file.path); + if (options.customReporter) { console.log(options.customReporter([file])); } else { From acb4b48aaac9d3c0a768d0d1a9d236930788a553 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Mon, 11 Feb 2019 09:25:38 -0500 Subject: [PATCH 5/8] Respond to feedback --- index.js | 11 ++++------- package.json | 2 +- 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/index.js b/index.js index 428128b..d26fdd0 100644 --- a/index.js +++ b/index.js @@ -59,8 +59,8 @@ lint.report = async options => { if (messages.length === 0) { spinner.succeed(); - if (options.customReporter) { - console.log(options.customReporter([])); + if (options.reporter) { + console.log(options.reporter([])); } return; @@ -75,11 +75,8 @@ lint.report = async options => { file.path = path.basename(file.path); - if (options.customReporter) { - console.log(options.customReporter([file])); - } else { - console.log(vfileReporterPretty([file])); - } + const reporter = options.reporter || vfileReporterPretty; + console.log(reporter([file])); }; module.exports = lint; diff --git a/package.json b/package.json index ca3370a..abe0518 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "awesome-lint", - "version": "0.9.0", + "version": "0.8.0", "description": "Linter for Awesome lists", "license": "MIT", "repository": "sindresorhus/awesome-lint", From a1aaccf56ae879a1589eb49b52a67ad3bf8fd79e Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Mon, 11 Feb 2019 10:08:31 -0500 Subject: [PATCH 6/8] Add tests and update readme for reporter option --- readme.md | 2 +- test/api.js | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/readme.md b/readme.md index dd318cb..604d494 100644 --- a/readme.md +++ b/readme.md @@ -88,7 +88,7 @@ Returns a `Promise` for a [`VFile`](https://github.com/wooorm/vfile). #### awesomeLint.report() -Show the lint output. +Show the lint output. This can be custom reported by setting `options.reporter=` and passing in `options` as a parameter. ## Maintainers diff --git a/test/api.js b/test/api.js index 58318f3..3941fff 100644 --- a/test/api.js +++ b/test/api.js @@ -4,3 +4,15 @@ import m from '..'; test('main', async t => { t.true((await m({filename: 'test/fixtures/main.md'})).messages.length > 0); }); + +test('custom reporter', async t => { + let reporterCalled = false; + const customReporter = function (vFileArr) { + if (vFileArr.length > 0) { + reporterCalled = true; + } + }; + + await m.report({filename: 'test/fixtures/main.md', reporter: customReporter}); + t.true(reporterCalled); +}); From b60de420fb190e0fd0424a108ba9ea23d73a8b66 Mon Sep 17 00:00:00 2001 From: Danny McCormick Date: Mon, 11 Feb 2019 10:32:39 -0500 Subject: [PATCH 7/8] Add reporter option to cli --- cli.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/cli.js b/cli.js index 3c1cd71..bc50813 100755 --- a/cli.js +++ b/cli.js @@ -8,11 +8,22 @@ const awesomeLint = require('.'); const main = async () => { const cli = meow(` Usage - $ awesome-lint - `); + $ awesome-lint + + Options + --reporter, -r Use a custom reporter + `, { + flags: { + reporter: { + type: 'string', + alias: 'r' + } + } + }); const options = { }; const input = cli.input[0]; + const reporterName = cli.flags.reporter; if (input) { options.filename = input; @@ -20,6 +31,19 @@ const main = async () => { options.filename = findReadmeFile(process.cwd()); } + if (reporterName) { + // Check if reporter is an npm package + try { + options.reporter = require(reporterName).report; + } catch (error) { + if (error.code === 'MODULE_NOT_FOUND') { + console.log(`No reporter found matching "${reporterName}". Proceeding with default reporter (vfile-reporter-pretty)`); + } else { + throw error; + } + } + } + await awesomeLint.report(options); }; From 4890b0b1342a1ab07f42543375e95aceefe541c1 Mon Sep 17 00:00:00 2001 From: Sindre Sorhus Date: Wed, 13 Feb 2019 14:48:32 +0700 Subject: [PATCH 8/8] Update api.js --- test/api.js | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/test/api.js b/test/api.js index 3941fff..e35c796 100644 --- a/test/api.js +++ b/test/api.js @@ -5,14 +5,14 @@ test('main', async t => { t.true((await m({filename: 'test/fixtures/main.md'})).messages.length > 0); }); -test('custom reporter', async t => { - let reporterCalled = false; - const customReporter = function (vFileArr) { - if (vFileArr.length > 0) { - reporterCalled = true; +test('`reporter` option', async t => { + let wasReporterCalled = false; + const reporter = reports => { + if (reports.length > 0) { + wasReporterCalled = true; } }; - await m.report({filename: 'test/fixtures/main.md', reporter: customReporter}); - t.true(reporterCalled); + await m.report({filename: 'test/fixtures/main.md', reporter}); + t.true(wasReporterCalled); });