Go

Rules for generating Go protobuf and gRPC .go files and libraries using golang/protobuf. Libraries are created with go_library from rules_go

Rules

Rule

Description

go_proto_compile

Generates Go protobuf .go files

go_grpc_compile

Generates Go protobuf and gRPC .go files

go_validate_compile

Generates Go protobuf and gRPC validation .go files

go_proto_library

Generates a Go protobuf library using go_library from rules_go

go_grpc_library

Generates a Go protobuf and gRPC library using go_library from rules_go

go_validate_library

Generates a Go protobuf and gRPC validation library using go_library from rules_go

go_proto_compile

Generates Go protobuf .go files

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_proto_compile")

go_proto_compile(
    name = "person_go_proto",
    protos = ["@rules_proto_grpc//example/proto:person_proto"],
)

go_proto_compile(
    name = "place_go_proto",
    protos = ["@rules_proto_grpc//example/proto:place_proto"],
)

go_proto_compile(
    name = "thing_go_proto",
    protos = ["@rules_proto_grpc//example/proto:thing_proto"],
)

Attributes

Attributes for go_proto_compile

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

Plugins

go_grpc_compile

Generates Go protobuf and gRPC .go files

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_grpc_compile")

go_grpc_compile(
    name = "thing_go_grpc",
    protos = ["@rules_proto_grpc//example/proto:thing_proto"],
)

go_grpc_compile(
    name = "greeter_go_grpc",
    protos = ["@rules_proto_grpc//example/proto:greeter_grpc"],
)

Attributes

Attributes for go_grpc_compile

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

Plugins

go_validate_compile

Warning

This rule is experimental. It may not work correctly or may change in future releases!

Generates Go protobuf and gRPC validation .go files

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_validate_compile")

go_validate_compile(
    name = "thing_go_validate",
    protos = ["@rules_proto_grpc//example/proto:thing_proto"],
)

go_validate_compile(
    name = "greeter_go_validate",
    protos = ["@rules_proto_grpc//example/proto:greeter_grpc"],
)

Attributes

Attributes for go_validate_compile

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

Plugins

go_proto_library

Generates a Go protobuf library using go_library from rules_go

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_proto_library")

go_proto_library(
    name = "proto_go_proto",
    importpath = "github.com/rules-proto-grpc/rules_proto_grpc/example/proto",
    protos = [
        "@rules_proto_grpc//example/proto:person_proto",
        "@rules_proto_grpc//example/proto:place_proto",
        "@rules_proto_grpc//example/proto:thing_proto",
    ],
)

Attributes

Attributes for go_proto_library

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

deps

label_list

false

[]

List of labels to pass as deps attr to underlying lang_library rule

importpath

string

false

None

Importpath for the generated files

go_grpc_library

Generates a Go protobuf and gRPC library using go_library from rules_go

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_grpc_library")

go_grpc_library(
    name = "greeter_go_grpc",
    importpath = "github.com/rules-proto-grpc/rules_proto_grpc/example/proto",
    protos = [
        "@rules_proto_grpc//example/proto:greeter_grpc",
        "@rules_proto_grpc//example/proto:thing_proto",
    ],
)

Attributes

Attributes for go_grpc_library

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

deps

label_list

false

[]

List of labels to pass as deps attr to underlying lang_library rule

importpath

string

false

None

Importpath for the generated files

go_validate_library

Warning

This rule is experimental. It may not work correctly or may change in future releases!

Generates a Go protobuf and gRPC validation library using go_library from rules_go

Example

Full example project can be found here

WORKSPACE

load("@rules_proto_grpc//:repositories.bzl", "bazel_gazelle", "io_bazel_rules_go")  # buildifier: disable=same-origin-load

io_bazel_rules_go()

load("@io_bazel_rules_go//go:deps.bzl", "go_register_toolchains", "go_rules_dependencies")

go_rules_dependencies()

go_register_toolchains(
    version = "1.17.1",
)

bazel_gazelle()

load("@bazel_gazelle//:deps.bzl", "gazelle_dependencies")

gazelle_dependencies()

load("@rules_proto_grpc//go:repositories.bzl", rules_proto_grpc_go_repos = "go_repos")

rules_proto_grpc_go_repos()

BUILD.bazel

load("@rules_proto_grpc//go:defs.bzl", "go_validate_library")

go_validate_library(
    name = "greeter_go_validate",
    importpath = "github.com/rules-proto-grpc/rules_proto_grpc/example/proto",
    protos = [
        "@rules_proto_grpc//example/proto:greeter_grpc",
        "@rules_proto_grpc//example/proto:thing_proto",
    ],
)

Attributes

Attributes for go_validate_library

Name

Type

Mandatory

Default

Description

protos

label_list

true

List of labels that provide the ProtoInfo provider (such as proto_library from rules_proto)

options

string_list_dict

false

[]

Extra options to pass to plugins, as a dict of plugin label -> list of strings. The key * can be used exclusively to apply to all plugins

verbose

int

false

0

The verbosity level. Supported values and results are 0: Show nothing, 1: Show command, 2: Show command and sandbox after running protoc, 3: Show command and sandbox before and after running protoc, 4. Show env, command, expected outputs and sandbox before and after running protoc

prefix_path

string

false

""

Path to prefix to the generated files in the output directory

extra_protoc_args

string_list

false

[]

A list of extra args to pass directly to protoc, not as plugin options

extra_protoc_files

label_list

false

[]

List of labels that provide extra files to be available during protoc execution

output_mode

string

false

PREFIXED

The output mode for the target. PREFIXED (the default) will output to a directory named by the target within the current package root, NO_PREFIX will output directly to the current package. Using NO_PREFIX may lead to conflicting writes

deps

label_list

false

[]

List of labels to pass as deps attr to underlying lang_library rule

importpath

string

false

None

Importpath for the generated files