@@ -17,6 +17,7 @@ ${chalk.dim('Options:')}
17
17
-f --force Binary - overwrites folder + file when downloading. Docker - rebuilds the docker image
18
18
-h, --help Show usage information
19
19
-l, --logs Logs to the console information about the OS, CPU model and download url (debugging purposes)
20
+ -r, --recompile Force-recompile tests (Not available in 0.2.2 and earlier versions)
20
21
-v, --version <tag> Choose the version of the rust binary that you want to be downloaded/used
21
22
`
22
23
@@ -38,17 +39,21 @@ module.exports = {
38
39
help,
39
40
l,
40
41
logs,
42
+ r,
43
+ recompile,
41
44
v,
42
45
version,
43
46
} = toolbox . parameters . options
44
47
48
+ let opts = new Map ( )
45
49
// Support both long and short option variants
46
- let coverageOpt = coverage || c
47
- let dockerOpt = docker || d
48
- let forceOpt = force || f
49
- let helpOpt = help || h
50
- let logsOpt = logs || l
51
- let versionOpt = version || v
50
+ opts . set ( "coverage" , coverage || c )
51
+ opts . set ( "docker" , docker || d )
52
+ opts . set ( "force" , force || f )
53
+ opts . set ( "help" , help || h )
54
+ opts . set ( "logs" , logs || l )
55
+ opts . set ( "recompile" , recompile || r )
56
+ opts . set ( "version" , version || v )
52
57
53
58
// Fix if a boolean flag (e.g -c, --coverage) has an argument
54
59
try {
@@ -62,7 +67,9 @@ module.exports = {
62
67
f,
63
68
force,
64
69
l,
65
- logs
70
+ logs,
71
+ r,
72
+ recompile
66
73
} )
67
74
} catch ( e ) {
68
75
print . error ( e . message )
@@ -73,24 +80,31 @@ module.exports = {
73
80
let datasource = toolbox . parameters . first || toolbox . parameters . array [ 0 ]
74
81
75
82
// Show help text if requested
76
- if ( helpOpt ) {
83
+ if ( opts . get ( "help" ) ) {
77
84
print . info ( HELP )
78
85
return
79
86
}
80
87
81
88
let result = await fetch ( 'https://api.github.com/repos/LimeChain/matchstick/releases/latest' )
82
89
let json = await result . json ( )
83
- let latestVersion = json . tag_name
90
+ opts . set ( " latestVersion" , json . tag_name )
84
91
85
- if ( dockerOpt ) {
86
- runDocker ( coverageOpt , datasource , versionOpt , latestVersion , forceOpt , print )
92
+ if ( opts . get ( "docker" ) ) {
93
+ runDocker ( datasource , opts , print )
87
94
} else {
88
- runBinary ( coverageOpt , datasource , forceOpt , logsOpt , versionOpt , latestVersion , print )
95
+ runBinary ( datasource , opts , print )
89
96
}
90
97
}
91
98
}
92
99
93
- async function runBinary ( coverageOpt , datasource , forceOpt , logsOpt , versionOpt , latestVersion , print ) {
100
+ async function runBinary ( datasource , opts , print ) {
101
+ let coverageOpt = opts . get ( "coverage" )
102
+ let forceOpt = opts . get ( "force" )
103
+ let logsOpt = opts . get ( "logs" )
104
+ let versionOpt = opts . get ( "version" )
105
+ let latestVersion = opts . get ( "latestVersion" )
106
+ let recompileOpt = opts . get ( "recompile" )
107
+
94
108
const platform = getPlatform ( logsOpt )
95
109
96
110
const url = `https://github.com/LimeChain/matchstick/releases/download/${ versionOpt || latestVersion } /${ platform } `
@@ -99,13 +113,14 @@ async function runBinary(coverageOpt, datasource, forceOpt, logsOpt, versionOpt,
99
113
console . log ( `Download link: ${ url } ` )
100
114
}
101
115
102
- let binary = new Binary ( platform , url , versionOpt )
116
+ let binary = new Binary ( platform , url , versionOpt || latestVersion )
103
117
forceOpt ? await binary . install ( true ) : await binary . install ( false )
104
- let args = ""
118
+ let args = new Array ( ) ;
105
119
106
- if ( datasource ) args = datasource
107
- if ( coverageOpt ) args = args + ' -c'
108
- args !== '' ? binary . run ( args . trim ( ) ) : binary . run ( )
120
+ if ( coverageOpt ) args . push ( '-c' )
121
+ if ( recompileOpt ) args . push ( '-r' )
122
+ if ( datasource ) args . push ( datasource )
123
+ args . length > 0 ? binary . run ( ...args ) : binary . run ( )
109
124
}
110
125
111
126
function getPlatform ( logsOpt ) {
@@ -143,7 +158,13 @@ function getPlatform(logsOpt) {
143
158
throw new Error ( `Unsupported platform: ${ type } ${ arch } ${ majorVersion } ` )
144
159
}
145
160
146
- function runDocker ( coverageOpt , datasource , versionOpt , latestVersion , forceOpt , print ) {
161
+ function runDocker ( datasource , opts , print ) {
162
+ let coverageOpt = opts . get ( "coverage" )
163
+ let forceOpt = opts . get ( "force" )
164
+ let versionOpt = opts . get ( "version" )
165
+ let latestVersion = opts . get ( "latestVersion" )
166
+ let recompileOpt = opts . get ( "recompile" )
167
+
147
168
// Remove binary-install-raw binaries, because docker has permission issues
148
169
// when building the docker images
149
170
fs . rmSync ( "./node_modules/binary-install-raw/bin" , { force : true , recursive : true } ) ;
@@ -179,13 +200,9 @@ function runDocker(coverageOpt, datasource, versionOpt, latestVersion, forceOpt,
179
200
let current_folder = process . cwd ( ) ;
180
201
let testArgs = '' ;
181
202
182
- if ( datasource ) {
183
- testArgs = testArgs + datasource
184
- }
185
-
186
- if ( coverageOpt ) {
187
- testArgs = testArgs + ' ' + '-c'
188
- }
203
+ if ( coverageOpt ) testArgs = testArgs + ' -c'
204
+ if ( recompileOpt ) testArgs = testArgs + ' -r'
205
+ if ( datasource ) testArgs = testArgs + ' ' + datasource
189
206
190
207
let dockerRunOpts = [ 'run' , '-it' , '--rm' , '--mount' , `type=bind,source=${ current_folder } ,target=/matchstick` ] ;
191
208
0 commit comments