From 4d85ebbcaa2d94061eebf474ac749560d42e3a58 Mon Sep 17 00:00:00 2001 From: Fernandez Ludovic Date: Fri, 31 Jan 2025 21:59:32 +0100 Subject: [PATCH] feat: use relative-path-mode for output formats --- pkg/commands/run.go | 2 +- pkg/printers/printer.go | 8 +++++++- pkg/printers/printer_test.go | 8 ++++---- 3 files changed, 12 insertions(+), 6 deletions(-) diff --git a/pkg/commands/run.go b/pkg/commands/run.go index 08de8f53c9fc..f389fff6d30a 100644 --- a/pkg/commands/run.go +++ b/pkg/commands/run.go @@ -194,7 +194,7 @@ func (c *runCommand) preRunE(_ *cobra.Command, args []string) error { c.dbManager = dbManager - printer, err := printers.NewPrinter(c.log, &c.cfg.Output, c.reportData) + printer, err := printers.NewPrinter(c.log, &c.cfg.Output, c.reportData, c.cfg.GetBasePath()) if err != nil { return err } diff --git a/pkg/printers/printer.go b/pkg/printers/printer.go index c04648ad9220..613e4abec8f9 100644 --- a/pkg/printers/printer.go +++ b/pkg/printers/printer.go @@ -25,6 +25,7 @@ type issuePrinter interface { type Printer struct { cfg *config.Output reportData *report.Data + basePath string log logutils.Log @@ -33,7 +34,7 @@ type Printer struct { } // NewPrinter creates a new Printer. -func NewPrinter(log logutils.Log, cfg *config.Output, reportData *report.Data) (*Printer, error) { +func NewPrinter(log logutils.Log, cfg *config.Output, reportData *report.Data, basePath string) (*Printer, error) { if log == nil { return nil, errors.New("missing log argument in constructor") } @@ -47,6 +48,7 @@ func NewPrinter(log logutils.Log, cfg *config.Output, reportData *report.Data) ( return &Printer{ cfg: cfg, reportData: reportData, + basePath: basePath, log: log, stdOut: logutils.StdOut, stdErr: logutils.StdErr, @@ -98,6 +100,10 @@ func (c *Printer) createWriter(path string) (io.Writer, bool, error) { return c.stdErr, false, nil } + if !filepath.IsAbs(path) { + path = filepath.Join(c.basePath, path) + } + err := os.MkdirAll(filepath.Dir(path), os.ModePerm) if err != nil { return nil, false, err diff --git a/pkg/printers/printer_test.go b/pkg/printers/printer_test.go index ef2e0bb02b50..f0ec639e0d33 100644 --- a/pkg/printers/printer_test.go +++ b/pkg/printers/printer_test.go @@ -67,7 +67,7 @@ func TestPrinter_Print_stdout(t *testing.T) { t.Run(test.desc, func(t *testing.T) { t.Parallel() - p, err := NewPrinter(logger, test.cfg, data) + p, err := NewPrinter(logger, test.cfg, data, "") require.NoError(t, err) var stdOutBuffer bytes.Buffer @@ -106,7 +106,7 @@ func TestPrinter_Print_stderr(t *testing.T) { }, } - p, err := NewPrinter(logger, cfg, data) + p, err := NewPrinter(logger, cfg, data, "") require.NoError(t, err) var stdOutBuffer bytes.Buffer @@ -145,7 +145,7 @@ func TestPrinter_Print_file(t *testing.T) { }, } - p, err := NewPrinter(logger, cfg, data) + p, err := NewPrinter(logger, cfg, data, "") require.NoError(t, err) var stdOutBuffer bytes.Buffer @@ -197,7 +197,7 @@ func TestPrinter_Print_multiple(t *testing.T) { }, } - p, err := NewPrinter(logger, cfg, data) + p, err := NewPrinter(logger, cfg, data, "") require.NoError(t, err) var stdOutBuffer bytes.Buffer