From 40f6480db6d1e336b9ebf409403f17c236ff6644 Mon Sep 17 00:00:00 2001 From: "Bryan C. Mills" Date: Thu, 3 Mar 2022 15:13:11 -0500 Subject: [PATCH] [release-branch.go1.18] cmd/go: error out of 'go work use' if no directories are given Otherwise, the behavior of 'go work use -r' (without arguments) may be surprising. For #51448. Change-Id: I50cf1339591720ec5bd333146b89c9944ce420d5 Reviewed-on: https://go-review.googlesource.com/c/go/+/389855 Trust: Bryan Mills Run-TryBot: Bryan Mills Reviewed-by: Michael Matloob TryBot-Result: Gopher Robot (cherry picked from commit 4f8094386c3c015f6b6f3efc3a002d188433d388) Reviewed-on: https://go-review.googlesource.com/c/go/+/389299 Trust: Dmitri Shuralyov Run-TryBot: Dmitri Shuralyov --- src/cmd/go/alldocs.go | 2 +- src/cmd/go/internal/workcmd/use.go | 5 ++++- src/cmd/go/testdata/script/work_use_noargs.txt | 11 +++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) create mode 100644 src/cmd/go/testdata/script/work_use_noargs.txt diff --git a/src/cmd/go/alldocs.go b/src/cmd/go/alldocs.go index 63e7900e02f47..dd53140157a3a 100644 --- a/src/cmd/go/alldocs.go +++ b/src/cmd/go/alldocs.go @@ -1535,7 +1535,7 @@ // // Usage: // -// go work use [-r] [moddirs] +// go work use [-r] moddirs // // Use provides a command-line interface for adding // directories, optionally recursively, to a go.work file. diff --git a/src/cmd/go/internal/workcmd/use.go b/src/cmd/go/internal/workcmd/use.go index 9e3bb4ae97859..e4666ac26dab3 100644 --- a/src/cmd/go/internal/workcmd/use.go +++ b/src/cmd/go/internal/workcmd/use.go @@ -20,7 +20,7 @@ import ( ) var cmdUse = &base.Command{ - UsageLine: "go work use [-r] [moddirs]", + UsageLine: "go work use [-r] moddirs", Short: "add modules to workspace file", Long: `Use provides a command-line interface for adding directories, optionally recursively, to a go.work file. @@ -101,6 +101,9 @@ func runUse(ctx context.Context, cmd *base.Command, args []string) { keepDirs[absDir] = dir } + if len(args) == 0 { + base.Fatalf("go: 'go work use' requires one or more directory arguments") + } for _, useDir := range args { if !*useR { lookDir(useDir) diff --git a/src/cmd/go/testdata/script/work_use_noargs.txt b/src/cmd/go/testdata/script/work_use_noargs.txt new file mode 100644 index 0000000000000..ca054344c638b --- /dev/null +++ b/src/cmd/go/testdata/script/work_use_noargs.txt @@ -0,0 +1,11 @@ +# For now, 'go work use' requires arguments. +# (Eventually, we may may it implicitly behave like 'go work use .'. + +! go work use +stderr '^go: ''go work use'' requires one or more directory arguments' + +! go work use -r +stderr '^go: ''go work use'' requires one or more directory arguments' + +-- go.work -- +go 1.18