From 9714691a3f1862f09cd8d8536131c01c15ab32c3 Mon Sep 17 00:00:00 2001 From: Roger Peppe Date: Mon, 22 Oct 2012 08:58:27 +0100 Subject: [PATCH] cmd/go: add join template function. It's common to use the go list command in shell scripts, but currently it's awkward to print a string slice from the Package type in a way that's easily parseable by the shell. For example: go list -f '{{range .Deps}}{{.}} {{end}}' (and even that prints an unwanted new line at the end|). To make this easier, this CL adds a "join" function to the format template. go list -f '{{join .Deps "\n"}}' R=rsc, dsymonds, minux.ma, remyoudompheng, r CC=golang-dev https://golang.org/cl/6680044 --- src/cmd/go/list.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/cmd/go/list.go b/src/cmd/go/list.go index 91b812f10a..391c47e94a 100644 --- a/src/cmd/go/list.go +++ b/src/cmd/go/list.go @@ -9,6 +9,7 @@ import ( "encoding/json" "io" "os" + "strings" "text/template" ) @@ -24,10 +25,10 @@ The default output shows the package import path: code.google.com/p/goauth2/oauth code.google.com/p/sqlite -The -f flag specifies an alternate format for the list, -using the syntax of package template. The default output -is equivalent to -f '{{.ImportPath}}'. The struct -being passed to the template is: +The -f flag specifies an alternate format for the list, using the +syntax of package template. The default output is equivalent to -f +'{{.ImportPath}}'. One extra template function is available, "join", +which calls strings.Join. The struct being passed to the template is: type Package struct { Dir string // directory containing package sources @@ -113,7 +114,7 @@ func runList(cmd *Command, args []string) { out.Write(nl) } } else { - tmpl, err := template.New("main").Parse(*listFmt) + tmpl, err := template.New("main").Funcs(template.FuncMap{"join": strings.Join}).Parse(*listFmt) if err != nil { fatalf("%s", err) } -- 2.48.1