|
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 |
|