src/main.ts   A
last analyzed

Complexity

Total Complexity 4
Complexity/F 2

Size

Lines of Code 68
Function Count 2

Duplication

Duplicated Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 57
dl 0
loc 68
rs 10
c 0
b 0
f 0
wmc 4
mnd 2
bc 2
fnc 2
bpm 1
cpm 2
noi 0

2 Functions

Rating   Name   Duplication   Size   Complexity  
A main.ts ➔ main 0 27 2
A main.ts ➔ assigner 0 21 2
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