@@ -5,6 +5,7 @@ require("es6-promise").polyfill();
5
5
6
6
import fs = require( "fs" ) ;
7
7
import commandpost = require( "commandpost" ) ;
8
+ import path = require( "path" ) ;
8
9
9
10
import lib = require( "./index" ) ;
10
11
@@ -35,60 +36,65 @@ var root = commandpost
35
36
. option ( "--no-tsfmt" , "don't read a tsfmt.json" )
36
37
. option ( "--verbose" , "makes output more verbose" )
37
38
. action ( ( opts , args ) => {
38
- var replace = ! ! opts . replace ;
39
- var verify = ! ! opts . verify ;
40
- var stdin = ! ! opts . stdin ;
41
- var tslint = ! ! opts . tslint ;
42
- var editorconfig = ! ! opts . editorconfig ;
43
- var tsfmt = ! ! opts . tsfmt ;
44
-
45
- if ( args . files . length === 0 && ! opts . stdin ) {
46
- process . stdout . write ( root . helpText ( ) + '\n' ) ;
47
- return ;
48
- }
39
+ var replace = ! ! opts . replace ;
40
+ var verify = ! ! opts . verify ;
41
+ var stdin = ! ! opts . stdin ;
42
+ var tslint = ! ! opts . tslint ;
43
+ var editorconfig = ! ! opts . editorconfig ;
44
+ var tsfmt = ! ! opts . tsfmt ;
49
45
50
- if ( opts . verbose ) {
51
- console . log ( "replace: " + ( replace ? "ON" : "OFF" ) ) ;
52
- console . log ( "verify: " + ( verify ? "ON" : "OFF" ) ) ;
53
- console . log ( "stdin: " + ( stdin ? "ON" : "OFF" ) ) ;
54
- console . log ( "tslint: " + ( tslint ? "ON" : "OFF" ) ) ;
55
- console . log ( "editorconfig: " + ( editorconfig ? "ON" : "OFF" ) ) ;
56
- console . log ( "tsfmt: " + ( tsfmt ? "ON" : "OFF" ) ) ;
57
- }
46
+ var files = args . files ;
47
+ if ( files . length === 0 && fs . existsSync ( "tsconfig.json" ) ) {
48
+ files = readFilesFromTsconfig ( "tsconfig.json" ) ;
49
+ }
58
50
59
- if ( opts . stdin ) {
60
- if ( opts . replace ) {
61
- errorHandler ( "--stdin option can not use with --replace option" ) ;
62
- return ;
63
- }
64
- lib
65
- . processStream ( args . files [ 0 ] || "temp.ts" , process . stdin , {
66
- replace : replace ,
67
- verify : verify ,
68
- tslint : tslint ,
69
- editorconfig : editorconfig ,
70
- tsfmt : tsfmt
71
- } )
72
- . then ( result => {
73
- var resultMap : lib . ResultMap = { } ;
74
- resultMap [ result . fileName ] = result ;
75
- return resultMap ;
76
- } )
77
- . then ( showResultHandler )
78
- . catch ( errorHandler ) ;
79
- } else {
80
- lib
81
- . processFiles ( args . files , {
82
- replace : replace ,
83
- verify : verify ,
84
- tslint : tslint ,
85
- editorconfig : editorconfig ,
86
- tsfmt : tsfmt
87
- } )
88
- . then ( showResultHandler )
89
- . catch ( errorHandler ) ;
51
+ if ( files . length === 0 && ! opts . stdin ) {
52
+ process . stdout . write ( root . helpText ( ) + '\n' ) ;
53
+ return ;
54
+ }
55
+
56
+ if ( opts . verbose ) {
57
+ console . log ( "replace: " + ( replace ? "ON" : "OFF" ) ) ;
58
+ console . log ( "verify: " + ( verify ? "ON" : "OFF" ) ) ;
59
+ console . log ( "stdin: " + ( stdin ? "ON" : "OFF" ) ) ;
60
+ console . log ( "tslint: " + ( tslint ? "ON" : "OFF" ) ) ;
61
+ console . log ( "editorconfig: " + ( editorconfig ? "ON" : "OFF" ) ) ;
62
+ console . log ( "tsfmt: " + ( tsfmt ? "ON" : "OFF" ) ) ;
63
+ }
64
+
65
+ if ( opts . stdin ) {
66
+ if ( opts . replace ) {
67
+ errorHandler ( "--stdin option can not use with --replace option" ) ;
68
+ return ;
90
69
}
91
- } ) ;
70
+ lib
71
+ . processStream ( files [ 0 ] || "temp.ts" , process . stdin , {
72
+ replace : replace ,
73
+ verify : verify ,
74
+ tslint : tslint ,
75
+ editorconfig : editorconfig ,
76
+ tsfmt : tsfmt
77
+ } )
78
+ . then ( result => {
79
+ var resultMap : lib . ResultMap = { } ;
80
+ resultMap [ result . fileName ] = result ;
81
+ return resultMap ;
82
+ } )
83
+ . then ( showResultHandler )
84
+ . catch ( errorHandler ) ;
85
+ } else {
86
+ lib
87
+ . processFiles ( files , {
88
+ replace : replace ,
89
+ verify : verify ,
90
+ tslint : tslint ,
91
+ editorconfig : editorconfig ,
92
+ tsfmt : tsfmt
93
+ } )
94
+ . then ( showResultHandler )
95
+ . catch ( errorHandler ) ;
96
+ }
97
+ } ) ;
92
98
93
99
commandpost
94
100
. exec ( root , process . argv )
@@ -108,10 +114,10 @@ function showResultHandler(resultMap: lib.ResultMap): Promise<any> {
108
114
Object . keys ( resultMap )
109
115
. map ( fileName => resultMap [ fileName ] )
110
116
. forEach ( result => {
111
- if ( result . message ) {
112
- console . log ( result . message ) ;
113
- }
114
- } ) ;
117
+ if ( result . message ) {
118
+ console . log ( result . message ) ;
119
+ }
120
+ } ) ;
115
121
}
116
122
return null ;
117
123
}
@@ -129,3 +135,16 @@ function errorHandler(err: any): Promise<any> {
129
135
return null ;
130
136
} ) ;
131
137
}
138
+
139
+ function readFilesFromTsconfig ( configPath : string ) {
140
+ "use strict" ;
141
+
142
+ var tsconfigDir = path . dirname ( configPath ) ;
143
+ var tsconfig = JSON . parse ( fs . readFileSync ( configPath , "utf-8" ) ) ;
144
+ if ( tsconfig . files ) {
145
+ var files : string [ ] = tsconfig . files ;
146
+ return files . map ( filePath => path . resolve ( tsconfigDir , filePath ) ) ;
147
+ } else {
148
+ throw new Error ( `No "files" section present in tsconfig.json` ) ;
149
+ }
150
+ }
0 commit comments