@@ -23,15 +23,15 @@ import (
2323 "net/http"
2424 "os"
2525 "path/filepath"
26+ "slices"
2627 "strconv"
2728 "time"
2829
2930 "github.com/google/uuid"
3031 "github.com/rs/zerolog"
3132 "github.com/rs/zerolog/log"
3233 "github.com/spf13/cobra"
33-
34- stdlog "log"
34+ //stdlog "log"
3535)
3636
3737func boolToPointer (b bool ) * bool {
@@ -132,7 +132,7 @@ func csvToMap(filename string) ([]map[string]string, error) {
132132
133133 // Populate the map with data from the row
134134 for i , column := range header {
135- rowMap [column ] = row [i ]
135+ rowMap [column ] = stripAllBOMs ( row [i ])
136136 }
137137
138138 // Append the map to the data slice
@@ -190,12 +190,23 @@ func informDebug(debugFlag bool) {
190190}
191191
192192func initLogger () {
193- stdlog .SetOutput (io .Discard )
194- zerolog .TimeFieldFormat = zerolog .TimeFormatUnix
195- zerolog .SetGlobalLevel (zerolog .Disabled ) // default to disabled
196- log .Logger = log .With ().Caller ().Logger ()
193+ // Configure zerolog to include caller information
194+ log .Logger = log .With ().Caller ().Logger ().Output (
195+ zerolog.ConsoleWriter {
196+ Out : os .Stdout ,
197+ TimeFormat : time .RFC3339 ,
198+ FormatCaller : func (caller interface {}) string {
199+ if c , ok := caller .(string ); ok {
200+ return c // This will include the full file path and line number
201+ }
202+ return ""
203+ },
204+ },
205+ )
197206 log .Logger = log .Output (zerolog.ConsoleWriter {Out : os .Stdout , TimeFormat : time .RFC3339 })
198207
208+ initStdLogger ()
209+
199210}
200211
201212func intToPointer (i int ) * int {
@@ -282,27 +293,32 @@ func logGlobals() {
282293
283294}
284295
285- func mapToCSV (data []map [string ]string , filename string ) error {
286- file , err := os .Create (filename )
287- if err != nil {
288- return err
296+ func mapToCSV (data []map [string ]string , filename string , inputHeader [] string ) error {
297+ file , fErr := os .Create (filename )
298+ if fErr != nil {
299+ return fErr
289300 }
290301 defer file .Close ()
291302
292303 writer := csv .NewWriter (file )
293304 defer writer .Flush ()
294305
295306 // Write the header using keys from the first map
296- var header [] string
297- if len (data ) > 0 {
307+ var header = inputHeader
308+ if len (header ) <= 0 && len ( data ) > 0 {
298309 for key := range data [0 ] {
299- header = append (header , key )
300- }
301- if err := writer .Write (header ); err != nil {
302- return err
310+ header = append (header , stripAllBOMs (key ))
303311 }
304312 }
305313
314+ errorColFound := slices .Contains (header , "Errors" )
315+ if ! errorColFound {
316+ header = append (header , "Errors" )
317+ }
318+ if hErr := writer .Write (header ); hErr != nil {
319+ return hErr
320+ }
321+
306322 // Write map data to CSV
307323 for _ , row := range data {
308324 var record []string
0 commit comments