github.com/stackb/rules_proto@v0.0.0-20240221195024-5428336c51f1/docs/installation.md (about) 1 --- 2 layout: default 3 title: Installation 4 permalink: guides/installation 5 parent: Guides 6 nav_order: 1 7 --- 8 9 Getting Started with rules_proto involves 2 steps: 10 11 1. Setup the `WORKSPACE` file. 12 1. Setup `BUILD.bazel` in the root of the workspace directory. 13 14 ## `./WORKSPACE` 15 16 ```python 17 # == rules_proto == 18 19 http_archive( 20 name = "build_stack_rules_proto", 21 sha256 = "c70122c7c5213a7492ae6e5274925505e13564634bb3541b92ac76c4059760a8", 22 strip_prefix = "rules_proto-fe9ef7534f97ec7a42d987ab49835505b1cec56e", 23 urls = ["https://github.com/stackb/rules_proto/archive/fe9ef7534f97ec7a42d987ab49835505b1cec56e.tar.gz"], 24 ) 25 26 register_toolchains("@build_stack_rules_proto//toolchain") 27 28 load("@build_stack_rules_proto//deps:core_deps.bzl", "core_deps") 29 30 core_deps() 31 32 # == Go == 33 34 load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies") 35 36 go_rules_dependencies() 37 38 go_register_toolchains(version = "1.18.2") 39 40 # == Gazelle == 41 42 load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies") 43 44 gazelle_dependencies() 45 46 # == Protobuf == 47 48 load("@build_stack_rules_proto//deps:protobuf_core_deps.bzl", "protobuf_core_deps") 49 50 protobuf_core_deps() 51 ``` 52 53 > NOTE: If you already have `rules_go` and `bazel_gazelle` in your workspace, 54 > you can skip the `core_deps`. If you already have `com_google_protobuf`, you 55 > can skip `protobuf_core_deps`. 56 57 ## `./BUILD.bazel` 58 59 The simplest configuration would be: 60 61 ```python 62 load("@bazel_gazelle//:def.bzl", "gazelle") 63 64 gazelle( 65 name = "update_build_files", 66 gazelle = "@build_stack_rules_proto//:gazelle", 67 ) 68 ``` 69 70 If you have your own gazelle language implementation(s), use something like the following: 71 72 ```python 73 load("@bazel_gazelle//:def.bzl", "gazelle", "gazelle_binary") 74 75 gazelle_binary( 76 name = "gazelle", 77 languages = [ 78 # NOTE: order matters here 79 "@bazel_gazelle//language/proto", 80 "@build_stack_rules_proto//language/protobuf", 81 "@bazel_gazelle//language/go", 82 "//gazelle/language/foo", 83 ], 84 ) 85 86 gazelle( 87 name = "update_build_files", 88 gazelle = ":gazelle", 89 ) 90 ``` 91 92 You should now be able to `bazel run //:update_build_files`. Proceed to [gazelle configuration](configuration).