Skip to content

Commit 99c8da2

Browse files
committed
improved error reporting
on jsdoc fail, jsdoc-parse now builds an error using the jsdoc stderr output
1 parent b26d465 commit 99c8da2

3 files changed

Lines changed: 41 additions & 21 deletions

File tree

bin/cli.js

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
var parse = require('../')
44
var commandLineArgs = require('command-line-args')
55
var cliOptions = require('../lib/cli-options')
6+
var ansi = require('ansi-escape-sequences')
67

78
var cli = commandLineArgs(parse.cliOptions.concat([
89
{ name: 'help', alias: 'h', type: Boolean, description: 'Display this usage.' }
@@ -12,9 +13,7 @@ try {
1213
var usage = cli.getUsage(cliOptions.usage)
1314
var options = cli.parse()
1415
} catch (err) {
15-
console.log(err.message)
16-
console.log(usage)
17-
process.exit(1)
16+
stop(err.message, 1)
1817
}
1918

2019
if (options.help) {
@@ -25,10 +24,20 @@ if (options.help) {
2524
if (options.src && options.src.length) {
2625
var parseStream = parse(options)
2726
parseStream
28-
.on('error', console.error)
27+
.on('error', function (err) {
28+
stop(err.message, 1)
29+
})
2930
.pipe(process.stdout)
3031
} else {
3132
var parseStream = parse(options)
32-
parseStream.on('error', console.error)
33+
parseStream.on('error', function (err) {
34+
stop(err.message, 1)
35+
})
3336
process.stdin.pipe(parseStream).pipe(process.stdout)
3437
}
38+
39+
function stop (msg, code) {
40+
console.error(ansi.format(msg, 'red'))
41+
console.error(usage)
42+
process.exit(code)
43+
}

lib/jsdoc-parse.js

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,15 @@
11
'use strict'
2-
var cp = require('child_process')
3-
var path = require('path')
4-
var util = require('util')
5-
var a = require('array-tools')
6-
var o = require('object-tools')
7-
var fs = require('fs')
8-
var mfs = require('more-fs')
9-
var fileSet = require('file-set')
10-
var Transform = require('stream').Transform
11-
var cliOptions = require('./cli-options')
2+
const cp = require('child_process')
3+
const path = require('path')
4+
const util = require('util')
5+
const a = require('array-tools')
6+
const o = require('object-tools')
7+
const fs = require('fs')
8+
const mfs = require('more-fs')
9+
const fileSet = require('file-set')
10+
const Transform = require('stream').Transform
11+
const cliOptions = require('./cli-options')
12+
const os = require('os')
1213

1314
/**
1415
Exports a single function to parse jsdoc data.
@@ -186,15 +187,24 @@ function getJsdocOutput (src, options, done) {
186187
}
187188
args = args.concat(src)
188189

189-
var outputFilePath = mfs.getTempFilePath() + '.json'
190+
var outputFilePath = os.tmpdir() + '/jsdoc-stdout.json'
190191
var outputFile = fs.openSync(outputFilePath, 'w')
191-
var handle = cp.spawn('node', args, { stdio: [ process.stdin, outputFile, process.stderr ]})
192+
var outputStderrPath = os.tmpdir() + '/jsdoc-stderr.json'
193+
var outputStderr = fs.openSync(outputStderrPath, 'w')
194+
var handle = cp.spawn('node', args, { stdio: [ process.stdin, outputFile, outputStderr ]})
192195
handle.on('error', done)
193-
handle.on('close', function () {
194-
fs.readFile(outputFilePath, function (err, data) {
195-
done(err, data)
196+
handle.on('close', function (code) {
197+
if (code) {
198+
const output = fs.readFileSync(outputStderrPath, 'utf8')
196199
fs.unlinkSync(outputFilePath)
197-
})
200+
fs.unlinkSync(outputStderrPath)
201+
done(new Error(output))
202+
} else {
203+
const output = fs.readFileSync(outputFilePath, 'utf8')
204+
fs.unlinkSync(outputFilePath)
205+
fs.unlinkSync(outputStderrPath)
206+
done(null, output)
207+
}
198208
})
199209
}
200210

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
"docs": "jsdoc2md -t jsdoc2md/README.hbs -p list lib/jsdoc-parse.js > README.md; echo"
2525
},
2626
"dependencies": {
27+
"ansi-escape-sequences": "^2.2.1",
2728
"array-tools": "^2",
2829
"command-line-args": "^2.1.1",
2930
"file-set": "~0.2.1",

0 commit comments

Comments
 (0)