Files
anydb/output/default.go

59 lines
1.3 KiB
Go

package output
import (
"fmt"
"io"
"strings"
"github.com/olekukonko/tablewriter"
"github.com/tlinden/anydb/app"
"github.com/tlinden/anydb/cfg"
)
func List(writer io.Writer, conf *cfg.Config, entries app.DbEntries) error {
// FIXME: call sort here
// FIXME: check output mode switch to subs
tableString := &strings.Builder{}
table := tablewriter.NewWriter(tableString)
if conf.Mode == "wide" {
table.SetHeader([]string{"KEY", "VALUE", "TAGS", "TIMESTAMP"})
} else {
table.SetHeader([]string{"KEY", "VALUE"})
}
for _, row := range entries {
if row.Value == "" {
row.Value = string(row.Bin)[0:60]
} else if len(row.Value) > 60 {
row.Value = row.Value[0:60]
}
if conf.Mode == "wide" {
table.Append([]string{row.Key, row.Value, strings.Join(row.Tags, ","), row.Created.Format("02.01.2006T03:04.05")})
} else {
table.Append([]string{row.Key, row.Value})
}
}
table.SetAutoWrapText(false)
table.SetAutoFormatHeaders(true)
table.SetHeaderAlignment(tablewriter.ALIGN_LEFT)
table.SetAlignment(tablewriter.ALIGN_LEFT)
table.SetCenterSeparator("")
table.SetColumnSeparator("")
table.SetRowSeparator("")
table.SetHeaderLine(false)
table.SetBorder(false)
table.SetNoWhiteSpace(true)
table.SetTablePadding("\t") // pad with tabs
table.Render()
fmt.Fprint(writer, tableString.String())
return nil
}