From 8964398033bb744551cd6b64b4b4c5d9b9ae104b Mon Sep 17 00:00:00 2001 From: Elliott Sales de Andrade Date: Apr 18 2019 05:47:08 +0000 Subject: Add simple output templating. --- diff --git a/cmd/golist/golist.go b/cmd/golist/golist.go index 30a6651..87ab5ea 100644 --- a/cmd/golist/golist.go +++ b/cmd/golist/golist.go @@ -6,10 +6,13 @@ import ( "os" "regexp" "sort" + "strconv" "strings" + "text/template" - "pagure.io/golist/pkg/util" "github.com/urfave/cli" + + "pagure.io/golist/pkg/util" ) // TODO(jchaloup): @@ -74,6 +77,19 @@ func main() { Name: "json", Usage: "Output as JSON artefact", }, + cli.StringFlag{ + Name: "template", + Usage: "Template used to print output", + Value: `{{.}}\n`, + }, + } + + getTemplate := func(output_fmt string) (*template.Template, error) { + str, err := strconv.Unquote(`"` + output_fmt + `"`) + if err != nil { + return nil, fmt.Errorf("Unparseable template string: %v", err) + } + return template.New("output").Parse(str) } app.Action = func(c *cli.Context) error { @@ -86,6 +102,11 @@ func main() { return fmt.Errorf("At least one of --provided, --imported, --to-install or --json must be set") } + tmpl, err := getTemplate(c.String("template")) + if err != nil { + return err + } + ignore := &util.Ignore{} for _, dir := range c.StringSlice("ignore-tree") { @@ -129,7 +150,10 @@ func main() { } sort.Strings(pkgs) for _, item := range pkgs { - fmt.Println(item) + err := tmpl.Execute(os.Stdout, item) + if err != nil { + return err + } } return nil } @@ -141,7 +165,10 @@ func main() { } sort.Strings(pkgs) for _, item := range pkgs { - fmt.Println(item) + err := tmpl.Execute(os.Stdout, item) + if err != nil { + return err + } } return nil } @@ -153,7 +180,10 @@ func main() { } sort.Strings(pkgs) for _, item := range pkgs { - fmt.Println(item) + err := tmpl.Execute(os.Stdout, item) + if err != nil { + return err + } } return nil }