44 "bytes"
55 "encoding/json"
66 "fmt"
7+ "log/slog"
78 "os"
89 "slices"
910 "strings"
@@ -29,11 +30,24 @@ func (r *RootCmd) Root() *serpent.Command {
2930 groups []string
3031 planJSON string
3132 preset string
33+ lvl string
3234 )
3335 cmd := & serpent.Command {
3436 Use : "codertf" ,
3537 Short : "codertf is a command line tool for previewing terraform template outputs." ,
3638 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+ },
3751 {
3852 Name : "dir" ,
3953 Description : "Directory with terraform files." ,
@@ -80,7 +94,21 @@ func (r *RootCmd) Root() *serpent.Command {
8094
8195 ctx := i .Context ()
8296
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 )
84112 presets := output .Presets
85113 chosenPresetIndex := slices .IndexFunc (presets , func (p types.Preset ) bool {
86114 return p .Name == preset
@@ -106,6 +134,7 @@ func (r *RootCmd) Root() *serpent.Command {
106134 Owner : types.WorkspaceOwner {
107135 Groups : groups ,
108136 },
137+ Logger : logger ,
109138 }
110139
111140 output , diags := preview .Preview (ctx , input , dfs )
0 commit comments