Total Complexity | 4 |
Complexity/F | 2 |
Lines of Code | 68 |
Function Count | 2 |
Duplicated Lines | 0 |
Ratio | 0 % |
Changes | 0 |
1 | import { |
||
2 | fromArgs, |
||
3 | fromEnv, |
||
4 | fromPackageEnv |
||
5 | } from "./cli-utils" |
||
6 | import { |
||
7 | parse |
||
8 | } from "./parse" |
||
9 | |||
10 | export type Reader = (path: string) => string | Buffer |
||
11 | |||
12 | const {assign: $assign} = Object |
||
13 | |||
14 | export { |
||
15 | main, |
||
16 | assigner |
||
17 | } |
||
18 | |||
19 | function main( |
||
20 | env: Env, |
||
21 | argv: string[], |
||
22 | reader: Reader, |
||
23 | deleteArgs: boolean |
||
24 | ) { |
||
25 | // TODO #13 |
||
26 | const patches = [ |
||
27 | fromEnv(env), |
||
28 | fromArgs(argv, deleteArgs), |
||
29 | fromPackageEnv(env) |
||
30 | ] |
||
31 | , {length} = patches |
||
32 | , envPatch: Record<string, unknown> = {} |
||
33 | |||
34 | for (let i = 0; i < length; i++) |
||
35 | assigner( |
||
36 | env, |
||
37 | patches[i], |
||
38 | reader, |
||
39 | envPatch |
||
40 | ) |
||
41 | |||
42 | $assign(env, envPatch) |
||
43 | |||
44 | return envPatch |
||
45 | } |
||
46 | |||
47 | function assigner( |
||
48 | env: Readonly<Env>, |
||
49 | files: readonly string[], |
||
50 | reader: Reader, |
||
51 | envPatch: Record<string, unknown> |
||
52 | ) { |
||
53 | const {length} = files |
||
54 | |||
55 | for (let i = length; i--; ) |
||
56 | // NB commutative |
||
57 | $assign( |
||
58 | envPatch, |
||
59 | parse( |
||
60 | reader(files[i]), |
||
61 | env, |
||
62 | envPatch |
||
63 | ) |
||
64 | ) |
||
65 | |||
66 | return envPatch |
||
67 | } |
||
68 |