Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Glossary

artifact

The build output of a single profile - a Go module, Cargo crate, Maven JAR, or npm package, produced under target/<profile-name>/. With --publish, the artifact is the thing that gets uploaded to a registry or pushed to a Git remote.

manifest

The Buffy.toml file at the root of a Buffy project. Contains the language-independent metadata (package name, version, license, authors). See The Manifest Format.

package

The unit of code Buffy operates on: a directory containing a Buffy.toml, a directory of .proto files (the source), and zero or more profiles under .buffy/. A package produces one artifact per profile.

profile

A language-and-variant configuration in the .buffy/ directory. Each profile is a TOML file selecting one language (e.g., rust, java) and one publishing variant (e.g., crate, maven_central, git). The filename without .toml becomes the profile name. See Profiles Format.

profile name

The filename of a profile in .buffy/ without the .toml extension. Profile names appear as the subdirectory under target/ and as the prefix in build output. They must be unique within a project.

registry

A central host that distributes packages for a language. Examples: crates.io for Rust, npm for JavaScript and TypeScript, Maven Central for Java and Kotlin. Buffy publishes to a registry via the language’s native publishing variant (crate, npm, maven_central).

source

The directory of .proto files configured under the [source] section of Buffy.toml. Buffy walks this directory recursively and passes every .proto file it finds to protoc. Defaults to src if the section is omitted.

target

The Buffy term for one published output (a Cargo crate, a Maven artifact, an npm package). Corresponds to one profile. Not to be confused with the target/ directory, which holds the generated content for every target.

variant

The publishing destination for a profile, selected as the second part of the nested table name [<language>.<variant>]. Each language defines which variants it supports. For example, rust supports crate and git, while golang supports only git. See the per-language profile chapters.