MCPcopy Index your code
hub / github.com/benbrittain/buckle

github.com/benbrittain/buckle @v1.1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.1.0 ↗ · + Follow
14 symbols 27 edges 2 files 3 documented · 21%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Buckle

Buckle is a launcher for Buck2. It manages Buck2 on a per-project basis. This enables a project or team to do seamless upgrades of their build system tooling.

It is designed to be minimally intrusive. Buckle only manages fetching Buck2 and enforcing the prelude is upgraded in sync.

Installation

There are multiple ways to install the buckle binary.

Prebuilts

There are prebuilts available for Linux, Windows, and MacOS hosted on GitHub.

curl --proto '=https' --tlsv1.2 -LsSf https://github.com/benbrittain/buckle/releases/download/v1.0.0/buckle-installer.sh | sh

Building from source

cargo install buckle

How To Use

Invoke buck2

The most basic thing Buckle does is invoke the buck2 binary. Use it as follows:

buckle build //...

By default, all of the above installation methods install the binary as buckle. You may also wish to add an alias to your shell:

alias buck2='buckle'

This will prevent you from accidently using the incorrect Buck2 version.

Specifying a Buck2 version

A .buckversion file is what allows you to pin your buck2 installation for all downstream users. Put it in the root of the Buck2 project.

latest or the release date in format YYYY-MM-DDD. buck2 releases

Example .buckversion:

2023-07-15

buckle supports an environment variable that can override the .buckversion file.

USE_BUCK2_VERSION=latest buckle //...

Prelude check

When upgraded, buck2 will likely not be syncronized with the standard prelude anymore. Buckle will notify in this scenario what prelude is expected and how to upgrade.

There are reasonable scenarios where someone actively working on the build system might be carrying a patch on the standard buck2 prelude. To disable the Buckle warnings of the mismatch:

export BUCKLE_PRELUDE_CHECK=NO

Changing the installation directory

Buckle stores the buck2 binary in a different place dependent on the OS.

Linux: $XDG_CACHE_HOME/buckle or $HOME/.cache/buckle

MacOS: $HOME/Library/Caches/buckle

Windows %LocalAppData%/buckle

you may also specify an override with the BUCKLE_CACHE environment variable.

export BUCKLE_CACHE=/tmp

Core symbols most depended-on inside this repo

get_buck2_project_root
called by 3
src/main.rs
get_buck2_dir
called by 2
src/main.rs
get_buckle_dir
called by 1
src/main.rs
get_releases
called by 1
src/main.rs
get_arch
called by 1
src/main.rs
download_http
called by 1
src/main.rs
get_expected_prelude_hash
called by 1
src/main.rs
read_buck2_version
called by 1
src/main.rs

Shape

Function 13
Class 1

Languages

Rust100%

Modules by API surface

src/main.rs12 symbols
tests/integration_buck2.rs2 symbols

For agents

$ claude mcp add buckle \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact