-
-
Notifications
You must be signed in to change notification settings - Fork 1.1k
/
convert_configuration.ts
86 lines (82 loc) · 2.23 KB
/
convert_configuration.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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
import {
IConfiguration,
isTruthyString,
OptionSplitter,
} from '../configuration'
import { IRunConfiguration } from './types'
export async function convertConfiguration(
flatConfiguration: IConfiguration,
env: NodeJS.ProcessEnv
): Promise<IRunConfiguration> {
return {
sources: {
paths: flatConfiguration.paths,
defaultDialect: flatConfiguration.language,
names: flatConfiguration.name,
tagExpression: flatConfiguration.tags,
order: flatConfiguration.order,
},
support: {
requireModules: flatConfiguration.requireModule,
requirePaths: flatConfiguration.require,
importPaths: flatConfiguration.import,
},
runtime: {
dryRun: flatConfiguration.dryRun,
failFast: flatConfiguration.failFast,
filterStacktraces: !flatConfiguration.backtrace,
parallel: flatConfiguration.parallel,
retry: flatConfiguration.retry,
retryTagFilter: flatConfiguration.retryTagFilter,
strict: flatConfiguration.strict,
worldParameters: flatConfiguration.worldParameters,
},
formats: convertFormats(flatConfiguration, env),
}
}
function convertFormats(
flatConfiguration: IConfiguration,
env: NodeJS.ProcessEnv
) {
const splitFormats: string[][] = flatConfiguration.format.map((item) =>
OptionSplitter.split(item)
)
return {
stdout:
[...splitFormats].reverse().find(([, target]) => !target)?.[0] ??
'progress',
files: splitFormats
.filter(([, target]) => !!target)
.reduce((mapped, [type, target]) => {
return {
...mapped,
[target]: type,
}
}, {}),
publish: makePublishConfig(flatConfiguration, env),
options: flatConfiguration.formatOptions,
}
}
function makePublishConfig(
flatConfiguration: IConfiguration,
env: NodeJS.ProcessEnv
): any {
const enabled = isPublishing(flatConfiguration, env)
if (!enabled) {
return false
}
return {
url: env.CUCUMBER_PUBLISH_URL,
token: env.CUCUMBER_PUBLISH_TOKEN,
}
}
function isPublishing(
flatConfiguration: IConfiguration,
env: NodeJS.ProcessEnv
): boolean {
return (
flatConfiguration.publish ||
isTruthyString(env.CUCUMBER_PUBLISH_ENABLED) ||
env.CUCUMBER_PUBLISH_TOKEN !== undefined
)
}