@@ -74,18 +74,15 @@ export class Multihost {
7474
7575 /**
7676 * Start MH browsing
77- *
78- * @param callback
7977 */
80- browse ( callback : ( err ?: Error | undefined , list ?: BrowseResultEntry [ ] ) => void ) : void {
78+ async browse ( ) : Promise < BrowseResultEntry [ ] > {
8179 const mhClient = new MHClient ( ) ;
82- mhClient . browse ( 2_000 , ! ! this . params . debug , ( err , list ) => {
83- if ( err ) {
84- callback ( new Error ( `Multihost discovery client: Cannot browse: ${ err . message } ` ) ) ;
85- } else {
86- callback ( undefined , list ) ;
87- }
88- } ) ;
80+ try {
81+ const res = await mhClient . browse ( 2_000 , ! ! this . params . debug ) ;
82+ return res ;
83+ } catch ( e ) {
84+ throw new Error ( `Multihost discovery client: Cannot browse: ${ e . message } ` ) ;
85+ }
8986 }
9087
9188 /**
@@ -351,11 +348,11 @@ export class Multihost {
351348 * @param pass password
352349 * @param callback
353350 */
354- connect (
351+ async connect (
355352 index : number | null ,
356353 pass : string | null ,
357354 callback : ( err ?: Error , list ?: BrowseResultEntry [ ] ) => void
358- ) : void {
355+ ) : Promise < void > {
359356 if ( typeof pass === 'function' ) {
360357 callback = pass ;
361358 pass = null ;
@@ -366,57 +363,57 @@ export class Multihost {
366363 }
367364
368365 const mhClient = new MHClient ( ) ;
366+ let list : BrowseResultEntry [ ] ;
369367
370- mhClient . browse ( 2_000 , ! ! this . params . debug , ( err , list ) => {
371- if ( err ) {
372- callback ( new Error ( `Cannot browse: ${ err . message } ` ) ) ;
368+ try {
369+ list = await mhClient . browse ( 2_000 , ! ! this . params . debug ) ;
370+ } catch ( e ) {
371+ callback ( new Error ( `Cannot browse: ${ e . message } ` ) ) ;
372+ return ;
373+ }
374+
375+ this . showHosts ( list ) ;
376+
377+ if ( index !== null && index !== undefined && index > 0 ) {
378+ if ( list && index < list . length + 1 ) {
379+ if ( ! pass ) {
380+ callback ( new Error ( 'No password defined: please use "multihost connect <NUMBER> <PASSWORD>"' ) ) ;
381+ } else {
382+ this . connectHelper ( mhClient , list [ index - 1 ] . ip ! , pass , callback ) ;
383+ }
373384 } else {
374- this . showHosts ( list ) ;
375-
376- if ( index !== null && index !== undefined && index > 0 ) {
377- if ( list && index < list . length + 1 ) {
378- if ( ! pass ) {
379- callback (
380- new Error ( 'No password defined: please use "multihost connect <NUMBER> <PASSWORD>"' )
381- ) ;
382- } else {
383- this . connectHelper ( mhClient , list [ index - 1 ] . ip ! , pass , callback ) ;
384- }
385- } else {
386- callback ( new Error ( `Invalid index: ${ index } ` ) ) ;
387- }
388- } else if ( list && list . length ) {
389- const rl = readline . createInterface ( {
390- input : process . stdin ,
391- output : process . stdout
392- } ) ;
393- rl . question ( 'Please select host [1]: ' , answer => {
394- if ( answer === '' || answer === null || answer === undefined ) {
395- index = 1 ;
396- }
397- index = parseInt ( answer , 10 ) - 1 ;
398- const listEntry = list [ index ] ;
399- if ( ! listEntry ) {
400- rl . close ( ) ;
401- callback ( new Error ( `Invalid index: ${ answer } ` ) ) ;
402- } else {
403- if ( listEntry . auth ) {
404- this . readPassword ( password => {
405- if ( password ) {
406- this . connectHelper ( mhClient , listEntry . ip ! , password , callback ) ;
407- } else {
408- callback ( new Error ( 'No password entered!' ) ) ;
409- }
410- } ) ;
385+ callback ( new Error ( `Invalid index: ${ index } ` ) ) ;
386+ }
387+ } else if ( list && list . length ) {
388+ const rl = readline . createInterface ( {
389+ input : process . stdin ,
390+ output : process . stdout
391+ } ) ;
392+ rl . question ( 'Please select host [1]: ' , answer => {
393+ if ( answer === '' || answer === null || answer === undefined ) {
394+ index = 1 ;
395+ }
396+ index = parseInt ( answer , 10 ) - 1 ;
397+ const listEntry = list [ index ] ;
398+ if ( ! listEntry ) {
399+ rl . close ( ) ;
400+ callback ( new Error ( `Invalid index: ${ answer } ` ) ) ;
401+ } else {
402+ if ( listEntry . auth ) {
403+ this . readPassword ( password => {
404+ if ( password ) {
405+ this . connectHelper ( mhClient , listEntry . ip ! , password , callback ) ;
411406 } else {
412- this . connectHelper ( mhClient , listEntry . ip ! , '' , callback ) ;
407+ callback ( new Error ( 'No password entered!' ) ) ;
413408 }
414- }
415- } ) ;
416- } else {
417- callback ( undefined , list ) ;
409+ } ) ;
410+ } else {
411+ this . connectHelper ( mhClient , listEntry . ip ! , '' , callback ) ;
412+ }
418413 }
419- }
420- } ) ;
414+ } ) ;
415+ } else {
416+ callback ( undefined , list ) ;
417+ }
421418 }
422419}
0 commit comments