9
9
"os/exec"
10
10
"os/signal"
11
11
"path/filepath"
12
+ "strings"
12
13
"syscall"
13
14
14
15
"github.com/avast/retry-go"
@@ -29,15 +30,24 @@ import (
29
30
30
31
var (
31
32
logger = hclog .New (& hclog.LoggerOptions {
32
- Name : "eggpack-terraform-plugin" ,
33
- Level : hclog .Info ,
33
+ Name : "eggpack-terraform-plugin" ,
34
+ Level : hclog .Info ,
35
+ JSONFormat : true ,
34
36
})
35
37
cliConfig = & config.TerraformPluginConfig {
36
38
AgentAddress : ":4300" ,
37
39
ConfigPath : "test/main" ,
40
+ LogLevel : config .TerraformPluginConfig_LOG_LEVEL_INFO ,
38
41
}
39
42
)
40
43
44
+ func tfLogStr () string {
45
+ if cliConfig .LogAsJson {
46
+ return "TF_LOG=JSON"
47
+ }
48
+ return "TF_LOG=" + strings .TrimPrefix (cliConfig .LogLevel .String (), "LOG_LEVEL_" )
49
+ }
50
+
41
51
func runTerraform (ctx context.Context , key string , tf * dynamic.Message ) error {
42
52
root , err := filepath .Abs (cliConfig .TerraformRoot )
43
53
if err != nil {
@@ -58,13 +68,19 @@ func runTerraform(ctx context.Context, key string, tf *dynamic.Message) error {
58
68
return err
59
69
}
60
70
l .Info ("running terraform init" )
61
- cmd := exec .Command ("terraform" , "-chdir=" + workDir , "init" )
71
+ cmd := exec .CommandContext (ctx , "terraform" , "-chdir=" + workDir , "init" )
72
+ cmd .Env = os .Environ ()
73
+ cmd .Env = append (cmd .Env , tfLogStr ())
74
+ cmd .Stderr = os .Stderr
62
75
if err = cmd .Run (); err != nil {
63
76
l .Error ("failed to run terraform init" , "error" , err )
64
77
return err
65
78
}
66
79
l .Info ("running terraform apply" )
67
- cmd = exec .Command ("terraform" , "-chdir=" + workDir , "apply" , "-auto-approve" )
80
+ cmd = exec .CommandContext (ctx , "terraform" , "-chdir=" + workDir , "apply" , "-auto-approve" )
81
+ cmd .Env = os .Environ ()
82
+ cmd .Env = append (cmd .Env , tfLogStr ())
83
+ cmd .Stderr = os .Stderr
68
84
if err = cmd .Run (); err != nil {
69
85
l .Error ("failed to run terraform apply" , "error" , err )
70
86
return err
@@ -87,6 +103,11 @@ func main() {
87
103
if flagset .Parse (os .Args [1 :]) != nil {
88
104
logger .Error ("failed to parse flag data" )
89
105
}
106
+ logger = hclog .New (& hclog.LoggerOptions {
107
+ Name : "eggpack-terraform-plugin" ,
108
+ Level : hclog .Level (cliConfig .LogLevel ),
109
+ JSONFormat : cliConfig .LogAsJson ,
110
+ })
90
111
91
112
parser := & protoparse.Parser {ImportPaths : []string {"src" , "" }}
92
113
descriptors , err := parser .ParseFiles ("terraform/v1/terraform.proto" )
0 commit comments