@@ -9,34 +9,31 @@ import { addBinExtension } from "../utils/extension/extension"
9
9
import { extractTarByExe } from "../utils/setup/extract"
10
10
import { setupAptPack } from "../utils/setup/setupAptPack"
11
11
import { setupPacmanPack } from "../utils/setup/setupPacmanPack"
12
- import { PackageInfo , setupBin } from "../utils/setup/setupBin"
12
+ import { InstallationInfo , PackageInfo , setupBin } from "../utils/setup/setupBin"
13
13
import { isArch } from "../utils/env/isArch"
14
14
import { hasDnf } from "../utils/env/hasDnf"
15
15
import { setupDnfPack } from "../utils/setup/setupDnfPack"
16
16
import { isUbuntu } from "../utils/env/isUbuntu"
17
+ import { removeVPrefix } from "../utils/setup/version"
17
18
18
- function getKcovPackageInfo ( version : string ) : PackageInfo {
19
- const version_number = parseInt ( version . replace ( / ^ v / , "" ) , 10 )
20
- if ( version_number === 38 ) {
21
- // eslint-disable-next-line no-param-reassign
22
- version = "v38"
19
+ function getDownloadKcovPackageInfo ( version_number : string ) : PackageInfo {
20
+ return {
21
+ url : `https://github.com/SimonKagstrom/kcov/releases/download/v${ version_number } /kcov-amd64.tar.gz` ,
22
+ extractedFolderName : "" ,
23
+ binRelativeDir : "usr/local/bin" ,
24
+ binFileName : addBinExtension ( "kcov" ) ,
25
+ extractFunction : extractTarByExe ,
23
26
}
24
- if ( version_number >= 39 ) {
25
- return {
26
- url : `https://github.com/SimonKagstrom/kcov/releases/download/v${ version_number } /kcov-amd64.tar.gz` ,
27
- extractedFolderName : "" ,
28
- binRelativeDir : "usr/local/bin" ,
29
- binFileName : addBinExtension ( "kcov" ) ,
30
- extractFunction : extractTarByExe ,
31
- }
32
- } else {
33
- return {
34
- url : `https://github.com/SimonKagstrom/kcov/archive/refs/tags/${ version } .tar.gz` ,
35
- extractedFolderName : `kcov-${ version_number } ` ,
36
- binRelativeDir : "build/" ,
37
- binFileName : addBinExtension ( "kcov" ) ,
38
- extractFunction : buildKcov ,
39
- }
27
+ }
28
+
29
+ function getBuildKcovPackageInfo ( version : string ) : PackageInfo {
30
+ const version_number = removeVPrefix ( version )
31
+ return {
32
+ url : `https://github.com/SimonKagstrom/kcov/archive/refs/tags/${ version } .tar.gz` ,
33
+ extractedFolderName : `kcov-${ version_number } ` ,
34
+ binRelativeDir : "build/" ,
35
+ binFileName : addBinExtension ( "kcov" ) ,
36
+ extractFunction : buildKcov ,
40
37
}
41
38
}
42
39
@@ -64,16 +61,32 @@ async function buildKcov(file: string, dest: string) {
64
61
return out
65
62
}
66
63
67
- export async function setupKcov ( version : string , setupDir : string , arch : string ) {
64
+ export async function setupKcov ( versionGiven : string , setupDir : string , arch : string ) {
68
65
switch ( process . platform ) {
69
66
case "linux" : {
70
- const installationInfo = await setupBin ( "kcov" , version , getKcovPackageInfo , setupDir , arch )
71
- if ( isArch ( ) ) {
72
- setupPacmanPack ( "binutils" )
73
- } else if ( hasDnf ( ) ) {
74
- setupDnfPack ( "binutils" )
75
- } else if ( isUbuntu ( ) ) {
76
- setupAptPack ( "libbinutils" )
67
+ // parse version
68
+ const versionSplit = versionGiven . split ( "-" )
69
+ let version = versionSplit [ 0 ]
70
+ const installMethod = versionSplit [ 1 ] as "binary" | undefined
71
+ const version_number = removeVPrefix ( version )
72
+ // fix inconsistency in tagging
73
+ if ( version_number === 38 ) {
74
+ version = "v38"
75
+ }
76
+
77
+ let installationInfo : InstallationInfo
78
+ if ( installMethod === "binary" && version_number >= 39 ) {
79
+ installationInfo = await setupBin ( "kcov" , version , getDownloadKcovPackageInfo , setupDir , arch )
80
+ if ( isArch ( ) ) {
81
+ setupPacmanPack ( "binutils" )
82
+ } else if ( hasDnf ( ) ) {
83
+ setupDnfPack ( "binutils" )
84
+ } else if ( isUbuntu ( ) ) {
85
+ setupAptPack ( "libbinutils" )
86
+ }
87
+ return installationInfo
88
+ } else {
89
+ installationInfo = await setupBin ( "kcov" , version , getBuildKcovPackageInfo , setupDir , arch )
77
90
}
78
91
return installationInfo
79
92
}
0 commit comments