From: Russ Cox Date: Wed, 31 May 2023 13:57:03 +0000 (-0400) Subject: cmd/go: introduce WriteOpts argument for WriteGoMod X-Git-Tag: go1.21rc1~169 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e73e5d80ea371a67f7b10725e623940a3dcd4924;p=gostls13.git cmd/go: introduce WriteOpts argument for WriteGoMod This CL is a no-op, just adding the new options and plumbing it through. 'go get' will use this option to let commitRequirements know whether toolchain was mentioned explicitly on the command line. For #57001. Change-Id: Iee7145f3335e899704df3e98fb840f1aa4063b0c Reviewed-on: https://go-review.googlesource.com/c/go/+/499555 Run-TryBot: Russ Cox Auto-Submit: Russ Cox Reviewed-by: Bryan Mills TryBot-Result: Gopher Robot --- diff --git a/src/cmd/go/internal/modcmd/download.go b/src/cmd/go/internal/modcmd/download.go index 9189240fa2..26ef1998de 100644 --- a/src/cmd/go/internal/modcmd/download.go +++ b/src/cmd/go/internal/modcmd/download.go @@ -187,7 +187,7 @@ func runDownload(ctx context.Context, cmd *base.Command, args []string) { // TODO(#45551): In the future, report an error if go.mod or go.sum need to // be updated after loading the build list. This may require setting // the mode to "mod" or "readonly" depending on haveExplicitArgs. - if err := modload.WriteGoMod(ctx); err != nil { + if err := modload.WriteGoMod(ctx, modload.WriteOpts{}); err != nil { base.Fatalf("go: %v", err) } } @@ -266,7 +266,7 @@ func runDownload(ctx context.Context, cmd *base.Command, args []string) { // Don't save sums for 'go mod download' without arguments unless we're in // workspace mode; see comment above. if haveExplicitArgs || modload.WorkFilePath() != "" { - if err := modload.WriteGoMod(ctx); err != nil { + if err := modload.WriteGoMod(ctx, modload.WriteOpts{}); err != nil { base.Errorf("go: %v", err) } } diff --git a/src/cmd/go/internal/modget/get.go b/src/cmd/go/internal/modget/get.go index eaa2b7d5db..ca5f0dc763 100644 --- a/src/cmd/go/internal/modget/get.go +++ b/src/cmd/go/internal/modget/get.go @@ -379,7 +379,7 @@ func runGet(ctx context.Context, cmd *base.Command, args []string) { // Everything succeeded. Update go.mod. oldReqs := reqsFromGoMod(modload.ModFile()) - if err := modload.WriteGoMod(ctx); err != nil { + if err := modload.WriteGoMod(ctx, modload.WriteOpts{}); err != nil { if tooNew, ok := err.(*gover.TooNewError); ok { // This can happen for 'go get go@newversion' // when all the required modules are old enough diff --git a/src/cmd/go/internal/modload/init.go b/src/cmd/go/internal/modload/init.go index 1a2a516e72..efdd339998 100644 --- a/src/cmd/go/internal/modload/init.go +++ b/src/cmd/go/internal/modload/init.go @@ -940,7 +940,7 @@ func CreateModFile(ctx context.Context, modPath string) { base.Fatalf("go: %v", err) } requirements = rs - if err := commitRequirements(ctx); err != nil { + if err := commitRequirements(ctx, WriteOpts{}); err != nil { base.Fatalf("go: %v", err) } @@ -1515,10 +1515,14 @@ func findImportComment(file string) string { return path } +// WriteOpts control the behavior of WriteGoMod. +type WriteOpts struct { +} + // WriteGoMod writes the current build list back to go.mod. -func WriteGoMod(ctx context.Context) error { +func WriteGoMod(ctx context.Context, opts WriteOpts) error { requirements = LoadModFile(ctx) - return commitRequirements(ctx) + return commitRequirements(ctx, opts) } // commitRequirements ensures go.mod and go.sum are up to date with the current @@ -1530,7 +1534,7 @@ func WriteGoMod(ctx context.Context) error { // go.mod or go.sum are out of date in a semantically significant way. // // In workspace mode, commitRequirements only writes changes to go.work.sum. -func commitRequirements(ctx context.Context) (err error) { +func commitRequirements(ctx context.Context, opts WriteOpts) (err error) { if inWorkspaceMode() { // go.mod files aren't updated in workspace mode, but we still want to // update the go.work.sum file. diff --git a/src/cmd/go/internal/modload/list.go b/src/cmd/go/internal/modload/list.go index a1c2908eed..1f210b831e 100644 --- a/src/cmd/go/internal/modload/list.go +++ b/src/cmd/go/internal/modload/list.go @@ -111,7 +111,7 @@ func ListModules(ctx context.Context, args []string, mode ListMode, reuseFile st if err == nil { requirements = rs if !ExplicitWriteGoMod { - err = commitRequirements(ctx) + err = commitRequirements(ctx, WriteOpts{}) } } return mods, err diff --git a/src/cmd/go/internal/modload/load.go b/src/cmd/go/internal/modload/load.go index 6c888116fe..b4cf736d75 100644 --- a/src/cmd/go/internal/modload/load.go +++ b/src/cmd/go/internal/modload/load.go @@ -450,7 +450,7 @@ func LoadPackages(ctx context.Context, opts PackageOpts, patterns ...string) (ma sort.Strings(loadedPackages) if !ExplicitWriteGoMod && opts.ResolveMissingImports { - if err := commitRequirements(ctx); err != nil { + if err := commitRequirements(ctx, WriteOpts{}); err != nil { base.Fatalf("go: %v", err) } } @@ -733,7 +733,7 @@ func ImportFromFiles(ctx context.Context, gofiles []string) { requirements = loaded.requirements if !ExplicitWriteGoMod { - if err := commitRequirements(ctx); err != nil { + if err := commitRequirements(ctx, WriteOpts{}); err != nil { base.Fatalf("go: %v", err) } } diff --git a/src/cmd/go/internal/workcmd/sync.go b/src/cmd/go/internal/workcmd/sync.go index eca6325442..1ecc3a8339 100644 --- a/src/cmd/go/internal/workcmd/sync.go +++ b/src/cmd/go/internal/workcmd/sync.go @@ -122,7 +122,7 @@ func runSync(ctx context.Context, cmd *base.Command, args []string) { SilenceMissingStdImports: true, SilencePackageErrors: true, }, "all") - modload.WriteGoMod(ctx) + modload.WriteGoMod(ctx, modload.WriteOpts{}) } wf, err := modload.ReadWorkFile(workFilePath)