{"id":28486145,"url":"https://github.com/containerd/protobuild","last_synced_at":"2025-07-02T12:32:29.500Z","repository":{"id":37419255,"uuid":"97186671","full_name":"containerd/protobuild","owner":"containerd","description":"Build protobufs in Go, easily","archived":false,"fork":false,"pushed_at":"2024-05-20T11:49:35.000Z","size":1343,"stargazers_count":124,"open_issues_count":9,"forks_count":30,"subscribers_count":13,"default_branch":"main","last_synced_at":"2025-06-08T01:11:23.693Z","etag":null,"topics":["go","gogo","golang","grpc","protobuf"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/containerd.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-07-14T02:57:18.000Z","updated_at":"2025-05-20T19:57:23.000Z","dependencies_parsed_at":"2023-07-13T10:22:14.041Z","dependency_job_id":"b332e80e-12fd-4830-8e0e-a13b0af2f8cc","html_url":"https://github.com/containerd/protobuild","commit_stats":null,"previous_names":["stevvooe/protobuild"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/containerd/protobuild","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerd%2Fprotobuild","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerd%2Fprotobuild/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerd%2Fprotobuild/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerd%2Fprotobuild/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/containerd","download_url":"https://codeload.github.com/containerd/protobuild/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/containerd%2Fprotobuild/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263140513,"owners_count":23419897,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","gogo","golang","grpc","protobuf"],"created_at":"2025-06-08T01:10:22.952Z","updated_at":"2025-07-02T12:32:29.473Z","avatar_url":"https://github.com/containerd.png","language":"Go","readme":"# protobuild\n\n[![Build Status](https://github.com/containerd/protobuild/workflows/CI/badge.svg)](https://github.com/containerd/protobuild/actions?query=workflow%3ACI)\n[![Go Report Card](https://goreportcard.com/badge/github.com/containerd/protobuild)](https://goreportcard.com/report/github.com/containerd/protobuild)\n\nBuild protobufs in Go, easily.\n\n`protobuild` works by scanning the go package in a project and emitting correct\n`protoc` commands, configured with the plugins, packages and details of your\nchoice.\n\nThe main benefit is that it makes it much easier to consume external types from\nvendored projects. By integrating the protoc include paths with Go's vendoring\nand GOPATH, builds are much easier to keep consistent across a project.\n\nThis comes from experience with generating protobufs with `go generate` in\nswarmkit and the tool used with containerd. It should replace both.\n\n## Status\n\nVery early stages.\n\n## Installation\n\nTo ensure easy use with builds, we'll try to support `go get`. Install with the\nfollowing command:\n\n```\ngo get -u github.com/containerd/protobuild\n```\n\n## Usage\n\nProtobuild works by providing a list of Go packages in which to build the\nprotobufs. To get started with a project, you must do the following:\n\n1. Create a `Protobuild.toml` file in the root of your Go project. Use the\n   [example](Protobuild.toml) as a starting point.\n\n2. Make sure that the packages where you want your protobuf files have a Go\n   file in place. Usually, adding a `doc.go` file is sufficient. A package for\n   protobuf should look like this:\n\n   ```\n   foo.proto\n   doc.go\n   ```\n\n   Where the contents of `doc.go` will have a package declaration in it. See\n   the [example](examples/foo/doc.go) for details. Make sure the package name\n   corresponds to what is in the `go_package` option.\n\n3. Run the `protobuild` command:\n    ```\n    go list ./... | grep -v vendor | xargs protobuild\n    ```\n\n## Version Compatibility\n\nOriginally protoc-gen-go was supporting gRPC through its plugins mechanism.\n[However gRPC support is later extracted as protoc-gen-go-gprc binary](https://github.com/protocolbuffers/protobuf-go/releases/tag/v1.20.0#user-content-v1.20-grpc-support).\n\nTo use protoc-gen-go and protoc-gen-go-grpc. Please specify `version = \"2\"` and\nboth code generators instead of `plugins` like below.\n\n```\nversion = \"2\"\ngenerators = [\"go\", \"go-grpc\"]\n```\n\n## Project details\n\nprotobuild is a containerd sub-project, licensed under the [Apache 2.0 license](./LICENSE).\nAs a containerd sub-project, you will find the:\n * [Project governance](https://github.com/containerd/project/blob/master/GOVERNANCE.md),\n * [Maintainers](https://github.com/containerd/project/blob/master/MAINTAINERS),\n * and [Contributing guidelines](https://github.com/containerd/project/blob/master/CONTRIBUTING.md)\n\ninformation in our [`containerd/project`](https://github.com/containerd/project) repository.\n","funding_links":[],"categories":["Go"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainerd%2Fprotobuild","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcontainerd%2Fprotobuild","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcontainerd%2Fprotobuild/lists"}