4
4
"bytes"
5
5
"encoding/json"
6
6
"fmt"
7
+ "log/slog"
7
8
"os"
8
9
"slices"
9
10
"strings"
@@ -29,11 +30,24 @@ func (r *RootCmd) Root() *serpent.Command {
29
30
groups []string
30
31
planJSON string
31
32
preset string
33
+ lvl string
32
34
)
33
35
cmd := & serpent.Command {
34
36
Use : "codertf" ,
35
37
Short : "codertf is a command line tool for previewing terraform template outputs." ,
36
38
Options : serpent.OptionSet {
39
+ {
40
+ Name : "log-level" ,
41
+ Description : "Turns on trivy parser logs." ,
42
+ Flag : "log-level" ,
43
+ Default : "" ,
44
+ Value : serpent .EnumOf (& lvl ,
45
+ slog .LevelDebug .String (),
46
+ slog .LevelInfo .String (),
47
+ slog .LevelWarn .String (),
48
+ slog .LevelError .String (),
49
+ ),
50
+ },
37
51
{
38
52
Name : "dir" ,
39
53
Description : "Directory with terraform files." ,
@@ -80,7 +94,21 @@ func (r *RootCmd) Root() *serpent.Command {
80
94
81
95
ctx := i .Context ()
82
96
83
- output , _ := preview .Preview (ctx , preview.Input {}, dfs )
97
+ logger := slog .New (slog .DiscardHandler )
98
+ if lvl != "" {
99
+ var logLevel slog.Level
100
+ err := logLevel .UnmarshalText ([]byte (lvl ))
101
+ if err != nil {
102
+ return fmt .Errorf ("invalid log level %q: %w" , lvl , err )
103
+ }
104
+
105
+ logger = slog .New (slog .NewTextHandler (os .Stdout , & slog.HandlerOptions {
106
+ Level : logLevel ,
107
+ }))
108
+ }
109
+ output , _ := preview .Preview (ctx , preview.Input {
110
+ Logger : slog .New (slog .DiscardHandler ),
111
+ }, dfs )
84
112
presets := output .Presets
85
113
chosenPresetIndex := slices .IndexFunc (presets , func (p types.Preset ) bool {
86
114
return p .Name == preset
@@ -106,6 +134,7 @@ func (r *RootCmd) Root() *serpent.Command {
106
134
Owner : types.WorkspaceOwner {
107
135
Groups : groups ,
108
136
},
137
+ Logger : logger ,
109
138
}
110
139
111
140
output , diags := preview .Preview (ctx , input , dfs )
0 commit comments