-
Notifications
You must be signed in to change notification settings - Fork 5
/
actionHandlers.go
92 lines (77 loc) · 1.82 KB
/
actionHandlers.go
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
87
88
89
90
91
92
package main
import (
"fmt"
"os"
)
func findActionHandler(kind string) func(chan bool, []dep, perform) int {
switch kind {
case "git":
return gitActionHandler
case "secret":
return secretesActionHandler
default:
return defaultActionHandler
}
}
/// *** Action Handlers *** ///
func defaultActionHandler(complete chan bool, deps []dep, perform perform) int {
performAction := depInjDefaultAction()
n := 0
for _, dep := range deps {
n++
go performAction(complete, dep, perform)
// If Serial, block until complete on each.
if perform.Serial {
<-complete
}
}
return n
}
func gitActionHandler(complete chan bool, deps []dep, perform perform) int {
performAction := depInjDefaultAction()
n := 0
for _, dep := range deps {
n++
switch perform.Action[0] {
case "clone": // Clone breaks if the parent dirs aren't already there.
there, _ := exists(dep.Location)
if !there {
if perform.DryRun {
if perform.Verbose {
fmt.Println("DryRun, would have performed a: `mkdir -p ", dep.Location, "`")
}
} else {
// mkdir -p <location>
os.MkdirAll(dep.Location, os.ModePerm)
}
}
go performAction(complete, dep, perform)
default:
go performAction(complete, dep, perform)
}
// If Serial, block until complete on each.
if perform.Serial {
<-complete
}
}
return n
}
// TODO: make a special handler for secrets
func secretesActionHandler(complete chan bool, deps []dep, perform perform) int {
performAction := depInjDefaultAction()
n := 0
for _, dep := range deps {
n++
switch perform.Action[0] {
//case "get": // Or something along these lines
// Right now, everything falls through to default.
default:
go performAction(complete, dep, perform)
}
// If Serial, block until complete on each.
if perform.Serial {
<-complete
}
}
return n
}