Files
Roger 00ad0e0bd4 feat: add output package with Formatter interface (#537)
* docs: add RFC-004 for CLI (cobra) and output design
* feat: add output package with Formatter interface and BrowserData.Each
* fix: golangci config array syntax + add output package tests
* refactor: encapsulated Output as Writer, collect-then-write pattern
* refactor: unified row type with reflection-based CSV/JSON output
* fix: ProfileName empty guard, writeFile close error check, sync RFC-004
2026-04-04 01:41:02 +08:00

29 lines
455 B
Go

package output
import (
"encoding/csv"
"io"
)
type csvFormatter struct{}
func (f *csvFormatter) ext() string { return "csv" }
func (f *csvFormatter) format(w io.Writer, rows []row) error {
if len(rows) == 0 {
return nil
}
cw := csv.NewWriter(w)
if err := cw.Write(rows[0].csvHeader()); err != nil {
return err
}
for _, r := range rows {
if err := cw.Write(r.csvRow()); err != nil {
return err
}
}
cw.Flush()
return cw.Error()
}