mirror of
https://codeberg.org/scip/tablizer.git
synced 2025-12-18 21:11:03 +01:00
add support for template output mode with new option --templage <tmpl> (#47)
This commit is contained in:
@@ -25,8 +25,10 @@ import (
|
||||
"log"
|
||||
"strconv"
|
||||
"strings"
|
||||
"text/template"
|
||||
|
||||
"codeberg.org/scip/tablizer/cfg"
|
||||
"github.com/Masterminds/sprig/v3"
|
||||
"github.com/gookit/color"
|
||||
"github.com/olekukonko/tablewriter"
|
||||
"github.com/olekukonko/tablewriter/renderer"
|
||||
@@ -66,6 +68,8 @@ func printData(writer io.Writer, conf cfg.Config, data *Tabdata) {
|
||||
printJsonData(writer, data)
|
||||
case cfg.CSV:
|
||||
printCSVData(writer, conf, data)
|
||||
case cfg.Template:
|
||||
printTemplateData(writer, conf, data)
|
||||
default:
|
||||
printASCIIData(writer, conf, data)
|
||||
}
|
||||
@@ -388,3 +392,25 @@ func printCSVData(writer io.Writer, conf cfg.Config, data *Tabdata) {
|
||||
log.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
||||
func printTemplateData(writer io.Writer, conf cfg.Config, data *Tabdata) {
|
||||
tmpl, err := template.New("printer").Funcs(sprig.TxtFuncMap()).Parse(conf.Template)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to parse template: %s", err)
|
||||
}
|
||||
|
||||
buf := strings.Builder{}
|
||||
|
||||
for line, dict := range data.ToMap() {
|
||||
err = tmpl.Execute(&buf, dict)
|
||||
if err != nil {
|
||||
log.Fatalf("failed to execute template in line %d: %s", line, err)
|
||||
}
|
||||
|
||||
buf.WriteString("\n")
|
||||
}
|
||||
|
||||
if _, err := fmt.Fprintln(writer, buf.String()); err != nil {
|
||||
log.Fatalf("failed to print output: %s", err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user