-
-
Notifications
You must be signed in to change notification settings - Fork 6.5k
/
setFromArgv.ts
63 lines (58 loc) · 1.59 KB
/
setFromArgv.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
/**
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
import type {Config} from '@jest/types';
import {isJSONString} from './utils';
const specialArgs = new Set(['_', '$0', 'h', 'help', 'config']);
export default function setFromArgv(
options: Config.InitialOptions,
argv: Config.Argv,
): Config.InitialOptions {
const argvToOptions = Object.keys(argv).reduce(
(options: Record<string, unknown>, key) => {
if (argv[key] === undefined || specialArgs.has(key)) {
return options;
}
switch (key) {
case 'coverage':
options.collectCoverage = argv[key];
break;
case 'json':
options.useStderr = argv[key];
break;
case 'watchAll':
options.watch = false;
options.watchAll = argv[key];
break;
case 'env':
options.testEnvironment = argv[key];
break;
case 'config':
break;
case 'coverageThreshold':
case 'globals':
case 'haste':
case 'moduleNameMapper':
case 'testEnvironmentOptions':
case 'transform':
const str = argv[key];
if (isJSONString(str)) {
options[key] = JSON.parse(str);
}
break;
default:
options[key] = argv[key];
}
return options;
},
{},
);
return {
...options,
...(isJSONString(argv.config) ? JSON.parse(argv.config) : null),
...argvToOptions,
};
}