buffalo

module
v1.33.18 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 24, 2026 License: MIT

README

🦬 Buffalo — Multi-Language Protobuf/gRPC Build System

License Go Version Version Stars Issues

Быстрые инкрементальные сборки protobuf/gRPC для Python, Go, Rust и C++


✨ Почему Buffalo

  • Скорость: кэш, инкрементальные и параллельные сборки
  • 🌍 Мультиязычность: Python / Go / Rust / C++
  • 🏗️ Bazel-native: rules_buffalo — встраивается в Bazel build graph через bzlmod
  • 🧩 Расширяемость: плагины, шаблоны, workspace
  • 🔐 Security-first: permissions audit + matrix
  • 📈 Наблюдаемость: stats, metrics, dependency graph

🎬 30-секундный старт

buffalo init myproject
cd myproject
buffalo build

С Bazel:

buffalo init --bazel myproject
cd myproject
bazel build //:proto_gen

Хочешь быстрее в прод? Начни с Quick Start.


🗺️ Визуальная схема пайплайна

graph LR
    A[.proto files] --> B[buffalo parse]
    B --> C{Build Targets}
    C --> D[Python]
    C --> E[Go]
    C --> F[Rust]
    C --> G[C++]
    B --> H[validate]
    B --> I[permissions]
    B --> J[models]
    J --> K[ORM-aware model generation]
    B --> L[Bazel]
    L --> M[buffalo_proto_compile]
    L --> N[buffalo_proto_gen]

🧠 Карта возможностей

mindmap
  root((Buffalo))
    Build
      Incremental cache
      Parallel workers
      Watch mode
    Bazel
      rules_buffalo
      buffalo_proto_compile
      buffalo_proto_gen
      bzlmod
    Modeling
      buffalo.models
      ORMs
      Multi-language codegen
    Security
      permissions matrix
      audit
      policy generation
    Analysis
      graph
      metrics
      doctor
    Monorepo
      workspace
      affected builds

🏗️ Bazel-интеграция

Buffalo встраивается в Bazel build graph как нативное правило через bzlmod.

# Инициализация — извлекает rules_buffalo в .buffalo/bazel/rules_buffalo/
buffalo init --bazel

Добавь в MODULE.bazel:

bazel_dep(name = "rules_buffalo", version = "1.0.0")
local_path_override(
    module_name = "rules_buffalo",
    path = ".buffalo/bazel/rules_buffalo",
)

Используй в BUILD.bazel:

load("@rules_buffalo//buffalo:defs.bzl", "buffalo_proto_compile")

# Hermetic: bazel build //:proto_gen
buffalo_proto_compile(
    name = "proto_gen",
    srcs = glob(["proto/**/*.proto"]),
    config = "buffalo.yaml",
    languages = ["go", "rust", "python"],
)

Для генерации в source tree (dev-workflow):

bazel run //:buffalo_gen
bazel run //:buffalo_gen -- --verbose

Подробнее: bazel/rules_buffalo/README.md


📚 Читай по разделам (коротко и удобно)


🧪 Примеры


📖 Полная документация


🤝 Контрибьютинг

Directories

Path Synopsis
cmd
buffalo command
internal
bazel
Package bazel provides integration between Buffalo and the Bazel build system.
Package bazel provides integration between Buffalo and the Bazel build system.
cli
compiler
Package compiler defines the common interface for language-specific compilers.
Package compiler defines the common interface for language-specific compilers.
compiler/python
Package python implements the Python protobuf compiler.
Package python implements the Python protobuf compiler.
compiler/typescript
Package typescript implements the TypeScript protobuf compiler.
Package typescript implements the TypeScript protobuf compiler.
config
Package config provides configuration management for Buffalo.
Package config provides configuration management for Buffalo.
dependency
Package dependency provides dependency management for proto files.
Package dependency provides dependency management for proto files.
embedded
Package embedded provides proto files bundled into the Buffalo binary.
Package embedded provides proto files bundled into the Buffalo binary.
graph
Package graph provides dependency graph analysis and visualization for proto files.
Package graph provides dependency graph analysis and visualization for proto files.
lsp
Package lsp implements the Language Server Protocol for Buffalo.
Package lsp implements the Language Server Protocol for Buffalo.
models
Package models provides proto model annotation parsing, code generation, and ORM integration for buffalo.models.
Package models provides proto model annotation parsing, code generation, and ORM integration for buffalo.models.
permissions
Package permissions provides RBAC/ABAC permission management for protobuf services.
Package permissions provides RBAC/ABAC permission management for protobuf services.
plugin
Package plugin provides a flexible plugin system for extending Buffalo functionality.
Package plugin provides a flexible plugin system for extending Buffalo functionality.
plugin/examples
Package examples provides example plugins for Buffalo This demonstrates how to create a simple validator plugin
Package examples provides example plugins for Buffalo This demonstrates how to create a simple validator plugin
sandbox
Package sandbox provides a hardened wrapper around os/exec for running untrusted external tools (protoc, language plugins, code generators, etc.) with timeouts, output bounds, environment whitelisting and path validation.
Package sandbox provides a hardened wrapper around os/exec for running untrusted external tools (protoc, language plugins, code generators, etc.) with timeouts, output bounds, environment whitelisting and path validation.
tools
Package tools provides language tools installation for Buffalo.
Package tools provides language tools installation for Buffalo.
upgrade
Package upgrade provides functionality for upgrading Buffalo and migrating configurations.
Package upgrade provides functionality for upgrading Buffalo and migrating configurations.
validation
Package validation provides proto field validation rule parsing and code generation.
Package validation provides proto field validation rule parsing and code generation.
version
Package version provides version information for Buffalo.
Package version provides version information for Buffalo.
workspace
Package workspace provides multi-project monorepo management for Buffalo.
Package workspace provides multi-project monorepo management for Buffalo.
pkg
errors
Package errors provides enhanced error handling with codes, stack traces, and context.
Package errors provides enhanced error handling with codes, stack traces, and context.
logger
Package logger provides a flexible, structured logging system for Buffalo.
Package logger provides a flexible, structured logging system for Buffalo.
tracing
Package tracing provides a minimal, zero-dependency tracing API used by Buffalo to instrument long-running build steps (proto compilation, dep fetch, cache lookups, etc.).
Package tracing provides a minimal, zero-dependency tracing API used by Buffalo to instrument long-running build steps (proto compilation, dep fetch, cache lookups, etc.).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL