-
Notifications
You must be signed in to change notification settings - Fork 53
/
TerraformEnvironmentStageShellHookPlugin.groovy
60 lines (55 loc) · 2.13 KB
/
TerraformEnvironmentStageShellHookPlugin.groovy
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
import static TerraformEnvironmentStage.ALL
import static TerraformEnvironmentStage.INIT_COMMAND
import static TerraformEnvironmentStage.PLAN
import static TerraformEnvironmentStage.PLAN_COMMAND
import static TerraformEnvironmentStage.APPLY
import static TerraformEnvironmentStage.APPLY_COMMAND
class TerraformEnvironmentStageShellHookPlugin implements TerraformEnvironmentStagePlugin, Resettable {
static hooks = [
(ALL): new HookPoint(ALL),
(INIT_COMMAND): new HookPoint(INIT_COMMAND),
(PLAN): new HookPoint(PLAN),
(PLAN_COMMAND): new HookPoint(PLAN_COMMAND),
(APPLY): new HookPoint(APPLY),
(APPLY_COMMAND): new HookPoint(APPLY_COMMAND)
]
public static void init() {
TerraformEnvironmentStageShellHookPlugin plugin = new TerraformEnvironmentStageShellHookPlugin()
TerraformEnvironmentStage.addPlugin(plugin)
}
public static withHook(String hookPoint, String shellCommand, WhenToRun whenToRun = WhenToRun.ON_SUCCESS) {
switch ( whenToRun ) {
case WhenToRun.BEFORE:
hooks[hookPoint].runBefore = shellCommand
break
case WhenToRun.AFTER:
hooks[hookPoint].runAfterAlways = shellCommand
break
case WhenToRun.ON_FAILURE:
hooks[hookPoint].runAfterOnFailure = shellCommand
break
case WhenToRun.ON_SUCCESS:
hooks[hookPoint].runAfterOnSuccess = shellCommand
break
}
return this
}
@Override
public void apply(TerraformEnvironmentStage stage) {
hooks.each { pointName, hookPoint ->
if (hookPoint.isConfigured()) {
stage.decorate(pointName, hookPoint.getClosure())
}
}
}
public static void reset() {
hooks = [
(ALL): new HookPoint(ALL),
(INIT_COMMAND): new HookPoint(INIT_COMMAND),
(PLAN): new HookPoint(PLAN),
(PLAN_COMMAND): new HookPoint(PLAN_COMMAND),
(APPLY): new HookPoint(APPLY),
(APPLY_COMMAND): new HookPoint(APPLY_COMMAND)
]
}
}