|
1 | 1 | import{satisfies}from'semver'
|
2 | 2 | import{exec}from'../node'
|
3 | 3 |
|
4 |
| -constsemverRegex=/(?<=^v?|\sv?)(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*)(?:\.(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*))*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?(?=$|\s)/gi |
| 4 | +constsemverRegex=/(?<=^v?|\sv?)(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)\.(?:0|[1-9]\d*)(?:-(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*)(?:\.(?:0|[1-9]\d*|[\da-z-]*[a-z-][\da-z-]*))*)?(?:\+[\da-z-]+(?:\.[\da-z-]+)*)?(\.windows.[0-9]+)?(?=$|\s)/gi |
5 | 5 |
|
6 | 6 | exportconstversion=async(name:string):Promise<string|null>=>{
|
7 | 7 | try{
|
8 | 8 | const{ stdout, stderr}=awaitexec(`${name} --version`)
|
9 | 9 | if(!stderr){
|
10 | 10 | constmatch=stdout.match(semverRegex)
|
11 | 11 | if(match){
|
12 |
| -returnmatch[0] |
| 12 | +constparsedVersion=match[0].split('.').slice(0,3).join('.') |
| 13 | +returnparsedVersion |
13 | 14 | }
|
14 | 15 | }
|
15 | 16 | returnnull
|
|