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).