mirror of
https://github.com/golang/go.git
synced 2024-09-21 02:19:00 +00:00
cmd/mod/edit: disallow relative tool paths
Allowing relative paths in `go.mod` introduced an inconsistency as we do not allow relative package paths anywhere else. For golang/go#48429 Change-Id: I5ef88aec4fe35f7e94a0cf6288e94099f3ca7a0e Reviewed-on: https://go-review.googlesource.com/c/go/+/614555 Reviewed-by: Sam Thanawalla <samthanawalla@google.com> Reviewed-by: Michael Matloob <matloob@golang.org> LUCI-TryBot-Result: Go LUCI <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
This commit is contained in:
parent
402dc98759
commit
097b7162ad
@ -339,25 +339,6 @@ func parsePath(flag, arg string) (path string) {
|
||||
return path
|
||||
}
|
||||
|
||||
// parsePath parses -flag=arg expecting arg to be path to a tool (allows ./)
|
||||
func parseToolPath(flag, arg string) (path string) {
|
||||
if strings.Contains(arg, "@") {
|
||||
base.Fatalf("go: -%s=%s: need just path, not path@version", flag, arg)
|
||||
}
|
||||
if arg == "." {
|
||||
return arg
|
||||
}
|
||||
toCheck := arg
|
||||
if strings.HasPrefix(arg, "./") {
|
||||
toCheck = arg[2:]
|
||||
}
|
||||
if err := module.CheckImportPath(toCheck); err != nil {
|
||||
base.Fatalf("go: -%s=%s: invalid path: %v", flag, arg, err)
|
||||
}
|
||||
|
||||
return arg
|
||||
}
|
||||
|
||||
// parsePathVersionOptional parses path[@version], using adj to
|
||||
// describe any errors.
|
||||
func parsePathVersionOptional(adj, arg string, allowDirPath bool) (path, version string, err error) {
|
||||
@ -547,7 +528,7 @@ func flagDropRetract(arg string) {
|
||||
|
||||
// flagTool implements the -tool flag.
|
||||
func flagTool(arg string) {
|
||||
path := parseToolPath("tool", arg)
|
||||
path := parsePath("tool", arg)
|
||||
edits = append(edits, func(f *modfile.File) {
|
||||
if err := f.AddTool(path); err != nil {
|
||||
base.Fatalf("go: -tool=%s: %v", arg, err)
|
||||
@ -557,7 +538,7 @@ func flagTool(arg string) {
|
||||
|
||||
// flagDropTool implements the -droptool flag.
|
||||
func flagDropTool(arg string) {
|
||||
path := parseToolPath("droptool", arg)
|
||||
path := parsePath("droptool", arg)
|
||||
edits = append(edits, func(f *modfile.File) {
|
||||
if err := f.DropTool(path); err != nil {
|
||||
base.Fatalf("go: -droptool=%s: %v", arg, err)
|
||||
|
13
src/cmd/go/testdata/script/mod_edit.txt
vendored
13
src/cmd/go/testdata/script/mod_edit.txt
vendored
@ -102,10 +102,6 @@ cd $WORK/h
|
||||
cp go.mod.start go.mod
|
||||
go mod edit -tool example.com/tool
|
||||
cmpenv go.mod go.mod.edit
|
||||
go mod edit -tool ./local
|
||||
cmpenv go.mod go.mod.edit2
|
||||
go mod edit -droptool ./local
|
||||
cmpenv go.mod go.mod.edit
|
||||
go mod edit -droptool example.com/tool2
|
||||
cmpenv go.mod go.mod.edit
|
||||
go mod edit -droptool example.com/tool
|
||||
@ -386,12 +382,3 @@ module g
|
||||
go 1.24
|
||||
|
||||
tool example.com/tool
|
||||
-- $WORK/h/go.mod.edit2 --
|
||||
module g
|
||||
|
||||
go 1.24
|
||||
|
||||
tool (
|
||||
./local
|
||||
example.com/tool
|
||||
)
|
||||
|
Loading…
Reference in New Issue
Block a user