@@ -46,19 +46,22 @@ export function cli(options: any): void {
4646 }
4747 } ) ;
4848 process . stdin . on ( 'end' , ( ) => {
49- if ( ! options . name ) {
50- console . error ( 'Failed to specify --name parameter' ) ;
49+ if ( options [ 'top-level-module' ] ) {
50+ process . stdout . write ( generateFromSource ( null , stdinCode . join ( '' ) ) ) ;
51+ } else if ( options [ 'module-name' ] ) {
52+ process . stdout . write ( generateFromSource ( options [ 'module-name' ] , stdinCode . join ( '' ) ) ) ;
53+ } else {
54+ console . error ( 'Failed to specify --module-name or --top-level-module parameter' ) ;
5155 process . exit ( 1 ) ;
5256 }
53- process . stdout . write ( generateFromSource ( options . name , stdinCode . join ( '' ) ) ) ;
5457 } ) ;
5558}
5659
57- export function generateFromFile ( name : string , path : string , options ?: IOptions ) : string {
58- return generateFromSource ( name , fs . readFileSync ( path ) . toString ( ) , options ) ;
60+ export function generateFromFile ( moduleName : string , path : string , options ?: IOptions ) : string {
61+ return generateFromSource ( moduleName , fs . readFileSync ( path ) . toString ( ) , options ) ;
5962}
6063
61- export function generateFromSource ( name : string , code : string , options : IOptions = { } ) : string {
64+ export function generateFromSource ( moduleName : string , code : string , options : IOptions = { } ) : string {
6265 const ast : any = babylon . parse ( code , {
6366 sourceType : 'module' ,
6467 allowReturnOutsideFunction : true ,
@@ -81,15 +84,16 @@ export function generateFromSource(name: string, code: string, options: IOptions
8184 'functionSent'
8285 ]
8386 } ) ;
84- return generateFromAst ( name , ast , options ) ;
87+ return generateFromAst ( moduleName , ast , options ) ;
8588}
8689
8790const defaultInstanceOfResolver : InstanceOfResolver = ( name : string ) : string => undefined ;
8891
89- export function generateFromAst ( name : string , ast : any , options : IOptions = { } ) : string {
92+ export function generateFromAst ( moduleName : string , ast : any , options : IOptions = { } ) : string {
9093 const { exportType, classname, propTypes} : IParsingResult = parseAst ( ast , options . instanceOfResolver ) ;
9194 const generator : Generator = options . generator || new Generator ( ) ;
92- generator . declareModule ( name , ( ) => {
95+
96+ const generateTypings : ( ) => void = ( ) => {
9397 generator . import ( '* as React' , 'react' ) ;
9498 if ( propTypes ) {
9599 Object . keys ( propTypes ) . forEach ( ( propName : string ) => {
@@ -105,7 +109,13 @@ export function generateFromAst(name: string, ast: any, options: IOptions = {}):
105109 generator . exportDeclaration ( exportType , ( ) => {
106110 generator . class ( classname , ! ! propTypes ) ;
107111 } ) ;
108- } ) ;
112+ } ;
113+
114+ if ( moduleName === null ) {
115+ generateTypings ( ) ;
116+ } else {
117+ generator . declareModule ( moduleName , generateTypings ) ;
118+ }
109119 return generator . toString ( ) ;
110120}
111121
0 commit comments