@@ -35,15 +35,29 @@ function inherits(target, source) {
3535
3636inherits ( rclnodejs . ShadowNode , Node ) ;
3737
38- /* eslint-disable */
3938function getCurrentGeneratorVersion ( ) {
4039 let jsonFilePath = path . join ( generator . generatedRoot , 'generator.json' ) ;
41- if ( fs . existsSync ( jsonFilePath ) ) {
42- return JSON . parse ( fs . readFileSync ( jsonFilePath , 'utf8' ) ) . version ;
43- }
44- return null ;
40+
41+ return new Promise ( ( resolve , reject ) => {
42+ fs . open ( jsonFilePath , 'r' , ( err , fd ) => {
43+ if ( err ) {
44+ if ( err . code === 'ENOENT' ) {
45+ resolve ( null ) ;
46+ return ;
47+ }
48+ reject ( err ) ;
49+ } else {
50+ fs . readFile ( jsonFilePath , 'utf8' , ( err , data ) => {
51+ if ( err ) {
52+ reject ( err ) ;
53+ } else {
54+ resolve ( JSON . parse ( data ) . version ) ;
55+ }
56+ } ) ;
57+ }
58+ } ) ;
59+ } ) ;
4560}
46- /* eslint-enable */
4761
4862/**
4963 * A module that exposes the rclnodejs interfaces.
@@ -87,19 +101,23 @@ let rcl = {
87101 init ( ...args ) {
88102 return new Promise ( ( resolve , reject ) => {
89103 if ( ! this . _initialized ) {
90- let version = getCurrentGeneratorVersion ( ) ;
91- let forced = version === null || compareVersions ( version , generator . version ( ) ) === - 1
92- ? true
93- : false ;
94- if ( forced ) {
95- debug ( 'The generator will begin to create JavaScript code from ROS IDL files...' ) ;
96- }
97- generator . generateAll ( forced ) . then ( ( ) => {
98- rclnodejs . init ( args ) ;
99- debug ( 'Finish initializing rcl with args = %o.' , args ) ;
100- this . _initialized = true ;
101- resolve ( ) ;
102- } ) . catch ( ( e ) => {
104+ getCurrentGeneratorVersion ( ) . then ( version => {
105+ let forced = version === null || compareVersions ( version , generator . version ( ) ) === - 1
106+ ? true
107+ : false ;
108+ if ( forced ) {
109+ debug ( 'The generator will begin to create JavaScript code from ROS IDL files...' ) ;
110+ }
111+
112+ generator . generateAll ( forced ) . then ( ( ) => {
113+ rclnodejs . init ( args ) ;
114+ debug ( 'Finish initializing rcl with args = %o.' , args ) ;
115+ this . _initialized = true ;
116+ resolve ( ) ;
117+ } ) . catch ( e => {
118+ reject ( e ) ;
119+ } ) ;
120+ } ) . catch ( e => {
103121 reject ( e ) ;
104122 } ) ;
105123 } else {
0 commit comments