@@ -49,21 +49,27 @@ exports.main = function(args) {
4949 ++ i ;
5050 }
5151
52- // There is no proper API for jsdoc, so this executes the CLI and writes to types/types.d.ts
53- var child = child_process . exec ( "node node_modules/jsdoc/jsdoc.js -c jsdoc.types.json " + files . join ( ' ' ) , {
54- cwd : path . join ( __dirname , ".." ) ,
52+ // There is no proper API for jsdoc, so this executes the CLI and pipes the output
53+ var basedir = path . join ( __dirname , ".." ) ;
54+ var child = child_process . exec ( "node \"" + basedir + "/node_modules/jsdoc/jsdoc.js\" -c \"" + basedir + "/jsdoc.types.json\" " + files . map ( function ( file ) { return '"' + file + '"' ; } ) . join ( ' ' ) , {
55+ cwd : process . cwd ( ) ,
5556 argv0 : "node" ,
5657 stdio : "pipe"
5758 } ) ;
58- child . stdout . pipe ( process . stdout ) ;
59+ var out = [ ] ;
60+ child . stdout . on ( "data" , function ( data ) {
61+ out . push ( data ) ;
62+ } ) ;
5963 child . stderr . pipe ( process . stderr ) ;
6064 child . on ( "close" , function ( code ) {
61- if ( code )
62- throw Error ( "exited with " + code ) ;
63-
64- var dir = path . join ( __dirname , ".." , "types" ) ;
65- var dts = fs . readFileSync ( path . join ( dir , "types.d.ts" ) , "utf8" ) ;
66- fs . unlinkSync ( path . join ( dir , "types.d.ts" ) ) ;
65+ if ( code ) {
66+ out = out . join ( '' ) . replace ( / \s * J S D o c \d + \. \d + \. \d + [ ^ $ ] + / , "" ) ;
67+ process . stderr . write ( out ) ;
68+ process . exit ( code ) ;
69+ return ;
70+ }
71+
72+ var dts = out . join ( '' ) . replace ( / { $ / mg, "{\n" ) . trim ( ) ;
6773
6874 var header = [
6975 "// $> pbts " + process . argv . slice ( 2 ) . join ( ' ' ) ,
@@ -74,7 +80,7 @@ exports.main = function(args) {
7480 // Remove declare statements and wrap everything in a module
7581 dts = dts . replace ( / \b d e c l a r e \s / g, "" ) ;
7682 dts = dts . replace ( / ^ / mg, " " ) ;
77- dts = header . join ( '\n' ) + "\ndeclare module " + JSON . stringify ( argv . name || "mymodule" ) + " {\n\n" + dts + "\n}\n" ;
83+ dts = header . join ( '\n' ) + "\ndeclare module " + JSON . stringify ( argv . name || "mymodule" ) + " {\n\n" + dts + "\n\n }\n" ;
7884
7985 if ( argv . out )
8086 fs . writeFileSync ( argv . out , dts ) ;
0 commit comments