11import commandLine from '../../services/command-line' ;
22
3+ function matchVersions ( v :string ) :string [ ] {
4+ return v . match ( / ( [ 0 - 9 ] + ) \. ( [ 0 - 9 ] + ) / ) ;
5+ }
6+
37function minVersion ( command :string , minVersion :string ) :Promise < boolean > {
48return new Promise ( ( resolve , reject ) => {
59let minOrLater :Promise < boolean > = commandLine ( command , '-v' )
@@ -9,13 +13,13 @@ function minVersion(command: string, minVersion: string): Promise<boolean> {
913return false ;
1014}
1115// two digits, ex: 0.10
12- let hasSecondDigit = res . match ( / ( [ 0 - 9 ] + ) \. ( [ 0 - 9 ] + ) / ) ;
13- if ( ! ! hasSecondDigit ) {
14- let versions = minVersion . match ( / ( [ 0 - 9 ] + ) \. ( [ 0 - 9 ] + ) / ) ;
15- let firstDigit = parseInt ( hasSecondDigit [ 1 ] , 10 ) ;
16- let firstVersion = parseInt ( versions [ 1 ] , 10 ) ;
16+ let mins = matchVersions ( minVersion ) ;
17+ if ( ! ! mins ) {
18+ let resMins = matchVersions ( res ) ;
19+ let firstDigit = parseInt ( resMins [ 1 ] , 10 ) ;
20+ let firstVersion = parseInt ( mins [ 1 ] , 10 ) ;
1721return firstDigit > firstVersion ||
18- firstDigit === firstVersion && parseInt ( hasSecondDigit [ 2 ] , 10 ) >= parseInt ( firstVersion [ 2 ] , 10 ) ;
22+ firstDigit === firstVersion && parseInt ( resMins [ 2 ] , 10 ) >= parseInt ( firstVersion [ 2 ] , 10 ) ;
1923} else {
2024// single digit, ex: 3.0
2125return parseInt ( res , 10 ) >= parseInt ( minVersion , 10 ) ;