@testim/testim-cli 3.283.0 → 3.285.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/codim/codim-cli.js
CHANGED
|
@@ -7,9 +7,11 @@
|
|
|
7
7
|
const fs = require('fs');
|
|
8
8
|
const childProcess = require('child_process');
|
|
9
9
|
const path = require('path');
|
|
10
|
+
const chalk = require('chalk');
|
|
10
11
|
const validateNpmPackageName = require('validate-npm-package-name');
|
|
11
12
|
const { promisify } = require('util');
|
|
12
13
|
const { ArgError } = require('../errors.js');
|
|
14
|
+
const { copyDir } = require('../utils/fsUtils');
|
|
13
15
|
|
|
14
16
|
const exec = promisify(childProcess.exec);
|
|
15
17
|
|
|
@@ -40,10 +42,12 @@ module.exports.init = async function init(name) {
|
|
|
40
42
|
const nameValidity = validateNpmPackageName(packageName);
|
|
41
43
|
|
|
42
44
|
if (!nameValidity.validForNewPackages) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
+
const message = `The name '${packageName}' is not a valid package name:`;
|
|
46
|
+
console.log(chalk.red(message));
|
|
47
|
+
if (nameValidity.errors) nameValidity.errors.forEach((e) => console.log(chalk.red(e)));
|
|
48
|
+
if (nameValidity.warnings) nameValidity.warnings.forEach((e) => console.log(chalk.yellowBright(`warning: ${e}`)));
|
|
45
49
|
|
|
46
|
-
throw new ArgError('
|
|
50
|
+
throw new ArgError(`${message}\nvalidation errors:\n${nameValidity.errors?.join('\n') || ''}\nwarnings:\n${nameValidity.warnings?.join('\n') || ''}`);
|
|
47
51
|
}
|
|
48
52
|
|
|
49
53
|
const response = await prompts({
|
|
@@ -55,14 +59,14 @@ module.exports.init = async function init(name) {
|
|
|
55
59
|
inactive: 'yes',
|
|
56
60
|
});
|
|
57
61
|
|
|
58
|
-
const sourceFolder = response.isJs ? 'template.js' : 'template.ts';
|
|
62
|
+
const sourceFolder = response.isJs ? 'template.js' : 'template.ts'; // these are directories and not file names
|
|
59
63
|
|
|
60
64
|
const source = path.join(__dirname, sourceFolder);
|
|
61
|
-
const
|
|
65
|
+
const destDir = path.join(process.cwd(), name);
|
|
62
66
|
|
|
63
|
-
let spinner = ora(`Creating new test project in ${
|
|
67
|
+
let spinner = ora(`Creating new test project in ${destDir}`).start();
|
|
64
68
|
|
|
65
|
-
await
|
|
69
|
+
await copyDir(source, destDir);
|
|
66
70
|
|
|
67
71
|
const sourcePackageJson = path.join(__dirname, sourceFolder, 'package.json');
|
|
68
72
|
const destPackageJson = path.join(process.cwd(), name, 'package.json');
|
|
@@ -79,9 +83,9 @@ module.exports.init = async function init(name) {
|
|
|
79
83
|
|
|
80
84
|
spinner.succeed();
|
|
81
85
|
spinner = ora('Installing dependencies').start();
|
|
82
|
-
await exec('npm install', { cwd:
|
|
86
|
+
await exec('npm install', { cwd: destDir });
|
|
83
87
|
|
|
84
88
|
spinner.succeed();
|
|
85
89
|
|
|
86
|
-
console.log(`Testim Dev Kit project folder successfully created in ${
|
|
90
|
+
console.log(`Testim Dev Kit project folder successfully created in ${destDir}.`);
|
|
87
91
|
};
|
|
@@ -252,7 +252,7 @@ const FIREFOX_FILE_NEVER_ASK = [
|
|
|
252
252
|
'application/vnd.cups-pdf',
|
|
253
253
|
];
|
|
254
254
|
|
|
255
|
-
function buildFirefoxOptions(opts, browserOptions) {
|
|
255
|
+
function buildFirefoxOptions(opts, browserOptions, lambdatestService) {
|
|
256
256
|
const fireFoxPrefs = {
|
|
257
257
|
'pdfjs.disabled': true, //disable pdf viewer. Otherwise, the pdf viewer takes over when we download a pdf.
|
|
258
258
|
};
|
|
@@ -278,7 +278,7 @@ function buildFirefoxOptions(opts, browserOptions) {
|
|
|
278
278
|
'moz:firefoxOptions': {
|
|
279
279
|
prefs: fireFoxPrefs,
|
|
280
280
|
},
|
|
281
|
-
});
|
|
281
|
+
}, lambdatestService.isLambdatestRun() ? { enableCustomTranslation: true } : {});
|
|
282
282
|
|
|
283
283
|
if (browserOptions.disableCookiesSameSiteNoneRequiresSecure) {
|
|
284
284
|
opts.desiredCapabilities['moz:firefoxOptions'].prefs['network.cookie.sameSite.noneRequiresSecure'] = false;
|
|
@@ -510,7 +510,7 @@ function buildSeleniumOptions(browserOptions, testName, testRunConfig, gridInfo,
|
|
|
510
510
|
opts = buildChromiumOptions(opts, browserOptions, testRunConfig, customExtensionLocalLocation, gridInfo, predefinedTestimExtension, lambdatestService);
|
|
511
511
|
break;
|
|
512
512
|
case 'firefox':
|
|
513
|
-
opts = buildFirefoxOptions(opts, browserOptions);
|
|
513
|
+
opts = buildFirefoxOptions(opts, browserOptions, lambdatestService);
|
|
514
514
|
break;
|
|
515
515
|
case 'safari':
|
|
516
516
|
case 'safari technology preview':
|
package/npm-shrinkwrap.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testim/testim-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.285.0",
|
|
4
4
|
"lockfileVersion": 2,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "@testim/testim-cli",
|
|
9
|
-
"version": "3.
|
|
9
|
+
"version": "3.285.0",
|
|
10
10
|
"license": "Proprietary",
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@applitools/eyes-sdk-core": "13.11.21",
|
|
@@ -62,7 +62,7 @@
|
|
|
62
62
|
"superagent-proxy": "3.0.0",
|
|
63
63
|
"test-exclude": "6.0.0",
|
|
64
64
|
"threads": "0.12.0",
|
|
65
|
-
"ua-parser-js": "0.7.
|
|
65
|
+
"ua-parser-js": "0.7.33",
|
|
66
66
|
"validate-npm-package-name": "3.0.0",
|
|
67
67
|
"webdriverio": "7.24.0",
|
|
68
68
|
"winston": "3.6.0",
|
|
@@ -226,6 +226,7 @@
|
|
|
226
226
|
"version": "1.1.35",
|
|
227
227
|
"resolved": "https://registry.npmjs.org/@applitools/execution-grid-client/-/execution-grid-client-1.1.35.tgz",
|
|
228
228
|
"integrity": "sha512-C5F7u0feVoQ9kncFiVSM2jqNHjAmz+VUdY55TfZuchq1CzSQv34pxhra5OlU62TZ74Cs4Uz0gv+tJYeGb6oeYA==",
|
|
229
|
+
"deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.",
|
|
229
230
|
"dependencies": {
|
|
230
231
|
"@applitools/logger": "1.1.30",
|
|
231
232
|
"@applitools/utils": "1.3.16",
|
|
@@ -418,9 +419,9 @@
|
|
|
418
419
|
}
|
|
419
420
|
},
|
|
420
421
|
"node_modules/@babel/runtime": {
|
|
421
|
-
"version": "7.20.
|
|
422
|
-
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.
|
|
423
|
-
"integrity": "sha512-
|
|
422
|
+
"version": "7.20.13",
|
|
423
|
+
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
|
424
|
+
"integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
|
|
424
425
|
"dependencies": {
|
|
425
426
|
"regenerator-runtime": "^0.13.11"
|
|
426
427
|
},
|
|
@@ -1328,9 +1329,9 @@
|
|
|
1328
1329
|
}
|
|
1329
1330
|
},
|
|
1330
1331
|
"node_modules/acorn": {
|
|
1331
|
-
"version": "8.8.
|
|
1332
|
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.
|
|
1333
|
-
"integrity": "sha512-
|
|
1332
|
+
"version": "8.8.2",
|
|
1333
|
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
|
|
1334
|
+
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==",
|
|
1334
1335
|
"bin": {
|
|
1335
1336
|
"acorn": "bin/acorn"
|
|
1336
1337
|
},
|
|
@@ -2182,9 +2183,9 @@
|
|
|
2182
2183
|
}
|
|
2183
2184
|
},
|
|
2184
2185
|
"node_modules/axios-retry": {
|
|
2185
|
-
"version": "3.
|
|
2186
|
-
"resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.
|
|
2187
|
-
"integrity": "sha512-
|
|
2186
|
+
"version": "3.4.0",
|
|
2187
|
+
"resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz",
|
|
2188
|
+
"integrity": "sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==",
|
|
2188
2189
|
"dependencies": {
|
|
2189
2190
|
"@babel/runtime": "^7.15.4",
|
|
2190
2191
|
"is-retry-allowed": "^2.2.0"
|
|
@@ -4215,9 +4216,9 @@
|
|
|
4215
4216
|
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
|
|
4216
4217
|
},
|
|
4217
4218
|
"node_modules/devtools/node_modules/ua-parser-js": {
|
|
4218
|
-
"version": "1.0.
|
|
4219
|
-
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.
|
|
4220
|
-
"integrity": "sha512-
|
|
4219
|
+
"version": "1.0.33",
|
|
4220
|
+
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz",
|
|
4221
|
+
"integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ==",
|
|
4221
4222
|
"funding": [
|
|
4222
4223
|
{
|
|
4223
4224
|
"type": "opencollective",
|
|
@@ -5681,9 +5682,9 @@
|
|
|
5681
5682
|
}
|
|
5682
5683
|
},
|
|
5683
5684
|
"node_modules/get-intrinsic": {
|
|
5684
|
-
"version": "1.
|
|
5685
|
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.
|
|
5686
|
-
"integrity": "sha512-
|
|
5685
|
+
"version": "1.2.0",
|
|
5686
|
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
|
|
5687
|
+
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
|
|
5687
5688
|
"dependencies": {
|
|
5688
5689
|
"function-bind": "^1.1.1",
|
|
5689
5690
|
"has": "^1.0.3",
|
|
@@ -12336,9 +12337,9 @@
|
|
|
12336
12337
|
}
|
|
12337
12338
|
},
|
|
12338
12339
|
"node_modules/punycode": {
|
|
12339
|
-
"version": "2.
|
|
12340
|
-
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.
|
|
12341
|
-
"integrity": "sha512-
|
|
12340
|
+
"version": "2.3.0",
|
|
12341
|
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
|
12342
|
+
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==",
|
|
12342
12343
|
"engines": {
|
|
12343
12344
|
"node": ">=6"
|
|
12344
12345
|
}
|
|
@@ -14787,9 +14788,9 @@
|
|
|
14787
14788
|
}
|
|
14788
14789
|
},
|
|
14789
14790
|
"node_modules/ua-parser-js": {
|
|
14790
|
-
"version": "0.7.
|
|
14791
|
-
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.
|
|
14792
|
-
"integrity": "sha512-
|
|
14791
|
+
"version": "0.7.33",
|
|
14792
|
+
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz",
|
|
14793
|
+
"integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw==",
|
|
14793
14794
|
"funding": [
|
|
14794
14795
|
{
|
|
14795
14796
|
"type": "opencollective",
|
|
@@ -16101,9 +16102,9 @@
|
|
|
16101
16102
|
"integrity": "sha512-VvBI5iF1OadOpoIKMuocE479tPmxJ7Af80v5zXDAxsqyEdEk3ZDYeDRb6W+SCiN1Uiur6j1iW0OxQ5JAQ/nIAQ=="
|
|
16102
16103
|
},
|
|
16103
16104
|
"@babel/runtime": {
|
|
16104
|
-
"version": "7.20.
|
|
16105
|
-
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.
|
|
16106
|
-
"integrity": "sha512-
|
|
16105
|
+
"version": "7.20.13",
|
|
16106
|
+
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
|
|
16107
|
+
"integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
|
|
16107
16108
|
"requires": {
|
|
16108
16109
|
"regenerator-runtime": "^0.13.11"
|
|
16109
16110
|
}
|
|
@@ -16835,9 +16836,9 @@
|
|
|
16835
16836
|
}
|
|
16836
16837
|
},
|
|
16837
16838
|
"acorn": {
|
|
16838
|
-
"version": "8.8.
|
|
16839
|
-
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.
|
|
16840
|
-
"integrity": "sha512-
|
|
16839
|
+
"version": "8.8.2",
|
|
16840
|
+
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
|
|
16841
|
+
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
|
|
16841
16842
|
},
|
|
16842
16843
|
"acorn-globals": {
|
|
16843
16844
|
"version": "6.0.0",
|
|
@@ -17496,9 +17497,9 @@
|
|
|
17496
17497
|
}
|
|
17497
17498
|
},
|
|
17498
17499
|
"axios-retry": {
|
|
17499
|
-
"version": "3.
|
|
17500
|
-
"resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.
|
|
17501
|
-
"integrity": "sha512-
|
|
17500
|
+
"version": "3.4.0",
|
|
17501
|
+
"resolved": "https://registry.npmjs.org/axios-retry/-/axios-retry-3.4.0.tgz",
|
|
17502
|
+
"integrity": "sha512-VdgaP+gHH4iQYCCNUWF2pcqeciVOdGrBBAYUfTY+wPcO5Ltvp/37MLFNCmJKo7Gj3SHvCSdL8ouI1qLYJN3liA==",
|
|
17502
17503
|
"requires": {
|
|
17503
17504
|
"@babel/runtime": "^7.15.4",
|
|
17504
17505
|
"is-retry-allowed": "^2.2.0"
|
|
@@ -19136,9 +19137,9 @@
|
|
|
19136
19137
|
"integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA=="
|
|
19137
19138
|
},
|
|
19138
19139
|
"ua-parser-js": {
|
|
19139
|
-
"version": "1.0.
|
|
19140
|
-
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.
|
|
19141
|
-
"integrity": "sha512-
|
|
19140
|
+
"version": "1.0.33",
|
|
19141
|
+
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.33.tgz",
|
|
19142
|
+
"integrity": "sha512-RqshF7TPTE0XLYAqmjlu5cLLuGdKrNu9O1KLA/qp39QtbZwuzwv1dT46DZSopoUMsYgXpB3Cv8a03FI8b74oFQ=="
|
|
19142
19143
|
}
|
|
19143
19144
|
}
|
|
19144
19145
|
},
|
|
@@ -20303,9 +20304,9 @@
|
|
|
20303
20304
|
"peer": true
|
|
20304
20305
|
},
|
|
20305
20306
|
"get-intrinsic": {
|
|
20306
|
-
"version": "1.
|
|
20307
|
-
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.
|
|
20308
|
-
"integrity": "sha512-
|
|
20307
|
+
"version": "1.2.0",
|
|
20308
|
+
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz",
|
|
20309
|
+
"integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==",
|
|
20309
20310
|
"requires": {
|
|
20310
20311
|
"function-bind": "^1.1.1",
|
|
20311
20312
|
"has": "^1.0.3",
|
|
@@ -25251,9 +25252,9 @@
|
|
|
25251
25252
|
}
|
|
25252
25253
|
},
|
|
25253
25254
|
"punycode": {
|
|
25254
|
-
"version": "2.
|
|
25255
|
-
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.
|
|
25256
|
-
"integrity": "sha512-
|
|
25255
|
+
"version": "2.3.0",
|
|
25256
|
+
"resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz",
|
|
25257
|
+
"integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA=="
|
|
25257
25258
|
},
|
|
25258
25259
|
"puppeteer-core": {
|
|
25259
25260
|
"version": "13.7.0",
|
|
@@ -27217,9 +27218,9 @@
|
|
|
27217
27218
|
"devOptional": true
|
|
27218
27219
|
},
|
|
27219
27220
|
"ua-parser-js": {
|
|
27220
|
-
"version": "0.7.
|
|
27221
|
-
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.
|
|
27222
|
-
"integrity": "sha512-
|
|
27221
|
+
"version": "0.7.33",
|
|
27222
|
+
"resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.33.tgz",
|
|
27223
|
+
"integrity": "sha512-s8ax/CeZdK9R/56Sui0WM6y9OFREJarMRHqLB2EwkovemBxNQ+Bqu8GAsUnVcXKgphb++ghr/B2BZx4mahujPw=="
|
|
27223
27224
|
},
|
|
27224
27225
|
"unbzip2-stream": {
|
|
27225
27226
|
"version": "1.4.3",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@testim/testim-cli",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.285.0",
|
|
4
4
|
"description": "Command line interface for running Testing on your CI",
|
|
5
5
|
"author": "Oren Rubin",
|
|
6
6
|
"contributors": [{
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
"istanbul-lib-coverage": "3.0.0",
|
|
39
39
|
"@bcoe/v8-coverage": "0.2.3",
|
|
40
40
|
"convert-source-map": "1.7.0",
|
|
41
|
-
"multer": "1.4.
|
|
41
|
+
"multer": "1.4.5-lts.1"
|
|
42
42
|
},
|
|
43
43
|
"dependencies": {
|
|
44
44
|
"@applitools/eyes-sdk-core": "13.11.21",
|
|
@@ -94,7 +94,7 @@
|
|
|
94
94
|
"superagent-proxy": "3.0.0",
|
|
95
95
|
"test-exclude": "6.0.0",
|
|
96
96
|
"threads": "0.12.0",
|
|
97
|
-
"ua-parser-js": "0.7.
|
|
97
|
+
"ua-parser-js": "0.7.33",
|
|
98
98
|
"validate-npm-package-name": "3.0.0",
|
|
99
99
|
"webdriverio": "7.24.0",
|
|
100
100
|
"winston": "3.6.0",
|
|
@@ -20,6 +20,7 @@ const LT_TUNNEL_BINARY_PATHNAME = {
|
|
|
20
20
|
win32x64: 'windows/64bit/LT_Windows.zip',
|
|
21
21
|
darwinia32: 'mac/32bit/LT_Mac.zip',
|
|
22
22
|
darwinx64: 'mac/64bit/LT_Mac.zip',
|
|
23
|
+
darwinarm64: 'mac/64bit/LT_Mac.zip',
|
|
23
24
|
linuxia32: 'linux/32bit/LT_Linux.zip',
|
|
24
25
|
linuxx64: 'linux/64bit/LT_Linux.zip',
|
|
25
26
|
freebsdia32: 'freebsd/32bit/LT_Freebsd.zip',
|
package/utils/fsUtils.js
CHANGED
|
@@ -138,6 +138,25 @@ async function getEnginesVersionAsync() {
|
|
|
138
138
|
}
|
|
139
139
|
}
|
|
140
140
|
|
|
141
|
+
/**
|
|
142
|
+
* @param {string} src Source directory to copy its contents
|
|
143
|
+
* @param {string} dest Target directory to copy to
|
|
144
|
+
* @param {boolean} [createParentDirs=true] Whether to create parent directories
|
|
145
|
+
*/
|
|
146
|
+
async function copyDir(src, dest, createParentDirs = true) {
|
|
147
|
+
const dirents = await fsPromises.readdir(src, { withFileTypes: true });
|
|
148
|
+
await fsPromises.mkdir(dest, { recursive: createParentDirs });
|
|
149
|
+
for (const item of dirents) {
|
|
150
|
+
const srcPath = path.join(src, item.name);
|
|
151
|
+
const destPath = path.join(dest, item.name);
|
|
152
|
+
if (item.isDirectory()) {
|
|
153
|
+
await copyDir(srcPath, destPath);
|
|
154
|
+
} else {
|
|
155
|
+
await fsPromises.copyFile(srcPath, destPath);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
|
|
141
160
|
module.exports = {
|
|
142
161
|
getCliLocation,
|
|
143
162
|
download,
|
|
@@ -151,4 +170,5 @@ module.exports = {
|
|
|
151
170
|
getRunnerVersion,
|
|
152
171
|
getEnginesVersion,
|
|
153
172
|
getEnginesVersionAsync,
|
|
173
|
+
copyDir,
|
|
154
174
|
};
|