-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDocker_file.js
52 lines (48 loc) · 1.13 KB
/
Docker_file.js
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
const DockerFile = (cmds) =>
new Proxy(
() => {}
, {
get: (t, k, r) => (e) => {
if (k === 'pipe') {
return e(DockerFile(cmds))
}
const _e =
typeof e === 'string'
? [ e ]
: e
const _cmds = [
...(
cmds
? cmds
: []
)
, `${k.toUpperCase()} \\\n${
_e.map(
(c, i) => {
const flag = c.match(/^\n {2,}/)
return ` ${
flag === null
? c
: c
.split(flag[0])
.filter(
e =>
( e.trim() === '' )
|| ( e.trim() === '\n' )
? false
: true
)
.join(' \\\n ')
.replace(/\n {2,}$/, '')
}`
}
)
}`
]
return DockerFile(_cmds)
}
, apply: (t, b, p) =>
cmds.join('\n\n')
}
)
export default DockerFile