From 6b40e9eb5cb4397381e7d8b442cbdd962375a081 Mon Sep 17 00:00:00 2001 From: Stefan Penner Date: Mon, 6 May 2024 11:11:44 -0600 Subject: [PATCH] Add docs for Go.Work Support Docs for https://github.com/bazelbuild/bazel-gazelle/pull/1731 --- docs/go/core/bzlmod.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/go/core/bzlmod.md b/docs/go/core/bzlmod.md index e9c84b8ba..be88820ff 100644 --- a/docs/go/core/bzlmod.md +++ b/docs/go/core/bzlmod.md @@ -160,6 +160,27 @@ go_deps.module( ) ``` +#### Specifying Workspaces + +The go.work functionality is supported by the go_deps module extension in Gazelle. + +Limitations: +* *Root Module Only*: go.work is supported exclusively in the root module. +* *Indirect Dependencies*: Dependencies that are indirect and themselves depend on a go module specified in go.work will have that dependency diverge from the one in go.work. [#1797](more details). +```starlark +go_deps = use_extension("@gazelle//:extensions.bzl", "go_deps") +go_deps.from_file(go_work = "//:go.work") + +# All *direct* Go dependencies of all `go.mod` files referenced by the `go.work` file have to be listed explicitly. +use_repo( + go_deps, + "com_github_gogo_protobuf", + "com_github_golang_mock", + "com_github_golang_protobuf", + "org_golang_x_net", +) +``` + #### Depending on tools If you need to depend on Go modules that are only used as tools, you can use the [`tools.go` technique](https://github.com/golang/go/issues/25922#issuecomment-1038394599):