From 240a8bfde1833f559ff3a018ff8ddb6e20019531 Mon Sep 17 00:00:00 2001 From: Paul Jolly Date: Tue, 30 Oct 2018 09:13:23 +0000 Subject: [PATCH] cmd/stringer: move away from using os.Args[0] MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit stringer's usage currently uses os.Args[0] to refer to the program name as a defensive measure in case stringer is compiled and then run using a name other than stringer, e.g. mystringer. However, the following lines of the usage docs hardcode "stringer." So it seems this has little benefit. Indeed this style of using os.Args[0] can make the usage information of stringer extremely ugly when stringer itself is invoked with an absolute path: Usage of /tmp/tmp.ahddh3ZjE7/.gobincache/golang.org/x/tools/@v/v0.0.0-20181030000716-a0a13e073c7b/golang.org/x/tools/cmd/stringer/stringer: stringer [flags] -type T [directory] stringer [flags] -type T files... # Must be a single package ... Instead, opt for the simpler approach of hardcoding stringer throughout. Change-Id: Ia296c8d9a91c94e77b7cc2b6242908c959fb5985 Reviewed-on: https://go-review.googlesource.com/c/145799 Reviewed-by: Daniel Martí Reviewed-by: Alan Donovan Reviewed-by: Rob Pike --- cmd/stringer/stringer.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cmd/stringer/stringer.go b/cmd/stringer/stringer.go index 5c3ad354..5edea7bf 100644 --- a/cmd/stringer/stringer.go +++ b/cmd/stringer/stringer.go @@ -87,7 +87,7 @@ var ( // Usage is a replacement usage function for the flags package. func Usage() { - fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0]) + fmt.Fprintf(os.Stderr, "Usage of stringer:\n") fmt.Fprintf(os.Stderr, "\tstringer [flags] -type T [directory]\n") fmt.Fprintf(os.Stderr, "\tstringer [flags] -type T files... # Must be a single package\n") fmt.Fprintf(os.Stderr, "For more information, see:\n")