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:
parent
319131f295
commit
9714691a3f
@ -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)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user