1
0
mirror of https://github.com/golang/go synced 2024-11-20 05:44:44 -07:00

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
This commit is contained in:
Roger Peppe 2012-10-22 08:58:27 +01:00
parent 319131f295
commit 9714691a3f

View File

@ -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)
}