Go dependency managment ======================= Status: managed by [Gazelle](https://github.com/bazelbuild/bazel-gazelle). .--------. | go.mod |------------. '--------' | | go mod tidy | bazel //:gazelle-update-repos V | .--------. | | go.sum |-----------.| '--------' | V .---------------------------------. | third_party/go/repositories.bzl | '---------------------------------' | bazel run //:gazelle V .----------------. | **/BUILD.bazel |. '----------------'| '----------------' | bazel build //... V .-----------------. | build artifacts | '-----------------' Updating and adding new dependencies ------------------------------------ Add a Go dependency to your code, then: $ bazel run @io_bazel_rules_go//go -- mod tidy $ bazel run //:gazelle-update-repos All generated sources (eg. protobuf stubs) that are usually built by Bazel are invisible to go(mod)-based tooling. To get around this, we place `gomod-generated-placeholder.go` files in package directories that would otherwise contain generated files. These are ignored by Gazelle (and thus by Bazel builds) but not by go(mod)-based tooling. Adding a tool dependency ------------------------ If you want some go-based tool to be built (which isn't depended upon by existing Go code) you'll have to add a synthetic import to `//third_party/go/tools.go`. Then run go mod tidy and gazelle-update-repos. Regenerating BUILDfiles ----------------------- To traverse the monorepo and generate BUILD(.bazel) files for all Go code: $ bazel run //:gazelle