Skip to content

Commit 219ec24

Browse files
Add recompile flag. Fix binary.run() arguments. Refactor the opts as a Map
1 parent 62eb271 commit 219ec24

File tree

1 file changed

+43
-26
lines changed

1 file changed

+43
-26
lines changed

src/commands/test.js

Lines changed: 43 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ ${chalk.dim('Options:')}
1717
-f --force Binary - overwrites folder + file when downloading. Docker - rebuilds the docker image
1818
-h, --help Show usage information
1919
-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)
2021
-v, --version <tag> Choose the version of the rust binary that you want to be downloaded/used
2122
`
2223

@@ -38,17 +39,21 @@ module.exports = {
3839
help,
3940
l,
4041
logs,
42+
r,
43+
recompile,
4144
v,
4245
version,
4346
} = toolbox.parameters.options
4447

48+
let opts = new Map()
4549
// 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)
5257

5358
// Fix if a boolean flag (e.g -c, --coverage) has an argument
5459
try {
@@ -62,7 +67,9 @@ module.exports = {
6267
f,
6368
force,
6469
l,
65-
logs
70+
logs,
71+
r,
72+
recompile
6673
})
6774
} catch (e) {
6875
print.error(e.message)
@@ -73,24 +80,31 @@ module.exports = {
7380
let datasource = toolbox.parameters.first || toolbox.parameters.array[0]
7481

7582
// Show help text if requested
76-
if (helpOpt) {
83+
if (opts.get("help")) {
7784
print.info(HELP)
7885
return
7986
}
8087

8188
let result = await fetch('https://api.github.com/repos/LimeChain/matchstick/releases/latest')
8289
let json = await result.json()
83-
let latestVersion = json.tag_name
90+
opts.set("latestVersion", json.tag_name)
8491

85-
if(dockerOpt) {
86-
runDocker(coverageOpt, datasource, versionOpt, latestVersion, forceOpt, print)
92+
if(opts.get("docker")) {
93+
runDocker(datasource, opts, print)
8794
} else {
88-
runBinary(coverageOpt, datasource, forceOpt, logsOpt, versionOpt, latestVersion, print)
95+
runBinary(datasource, opts, print)
8996
}
9097
}
9198
}
9299

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+
94108
const platform = getPlatform(logsOpt)
95109

96110
const url = `https://github.com/LimeChain/matchstick/releases/download/${versionOpt || latestVersion}/${platform}`
@@ -99,13 +113,14 @@ async function runBinary(coverageOpt, datasource, forceOpt, logsOpt, versionOpt,
99113
console.log(`Download link: ${url}`)
100114
}
101115

102-
let binary = new Binary(platform, url, versionOpt)
116+
let binary = new Binary(platform, url, versionOpt || latestVersion)
103117
forceOpt ? await binary.install(true) : await binary.install(false)
104-
let args = ""
118+
let args = new Array();
105119

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()
109124
}
110125

111126
function getPlatform(logsOpt) {
@@ -143,7 +158,13 @@ function getPlatform(logsOpt) {
143158
throw new Error(`Unsupported platform: ${type} ${arch} ${majorVersion}`)
144159
}
145160

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+
147168
// Remove binary-install-raw binaries, because docker has permission issues
148169
// when building the docker images
149170
fs.rmSync("./node_modules/binary-install-raw/bin", { force: true, recursive: true });
@@ -179,13 +200,9 @@ function runDocker(coverageOpt, datasource, versionOpt, latestVersion, forceOpt,
179200
let current_folder = process.cwd();
180201
let testArgs = '';
181202

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
189206

190207
let dockerRunOpts = ['run', '-it', '--rm', '--mount', `type=bind,source=${current_folder},target=/matchstick`];
191208

0 commit comments

Comments
 (0)