feat: add list command with global filters
This commit is contained in:
48
internal/output/table.go
Normal file
48
internal/output/table.go
Normal file
@@ -0,0 +1,48 @@
|
||||
package output
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"io"
|
||||
"text/tabwriter"
|
||||
)
|
||||
|
||||
// tableFormatter renders aligned columns for human-friendly review.
|
||||
type tableFormatter struct {
|
||||
writer *tabwriter.Writer
|
||||
}
|
||||
|
||||
// NewTableFormatter constructs a table formatter.
|
||||
func NewTableFormatter() Formatter {
|
||||
return &tableFormatter{}
|
||||
}
|
||||
|
||||
func (f *tableFormatter) Begin(w io.Writer) error {
|
||||
f.writer = tabwriter.NewWriter(w, 0, 4, 2, ' ', 0)
|
||||
_, err := fmt.Fprintln(f.writer, "PATH\tTYPE\tSIZE")
|
||||
return err
|
||||
}
|
||||
|
||||
func (f *tableFormatter) WriteEntry(w io.Writer, entry Entry) error {
|
||||
if f.writer == nil {
|
||||
return fmt.Errorf("table formatter not initialized")
|
||||
}
|
||||
|
||||
size := "-"
|
||||
if entry.Type == "file" && entry.SizeBytes >= 0 {
|
||||
size = fmt.Sprintf("%d", entry.SizeBytes)
|
||||
}
|
||||
|
||||
_, err := fmt.Fprintf(f.writer, "%s\t%s\t%s\n", entry.Path, entry.Type, size)
|
||||
return err
|
||||
}
|
||||
|
||||
func (f *tableFormatter) WriteSummary(w io.Writer, summary Summary) error {
|
||||
if f.writer == nil {
|
||||
return fmt.Errorf("table formatter not initialized")
|
||||
}
|
||||
if err := f.writer.Flush(); err != nil {
|
||||
return err
|
||||
}
|
||||
_, err := fmt.Fprintln(w, DefaultSummaryLine(summary))
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user