#cache #bin #cargo-toml #cli #developer-experiance

app cargo-gha

Version lock, cache, and run binaries from any Github Release assets. Pull in external tools and keep the versions in sync across your team, and forget installing globally.

14 releases (3 stable)

1.0.2 Jan 2, 2024
0.4.6 Oct 6, 2023
0.4.5 Sep 22, 2023
0.3.0 Sep 4, 2023
0.1.2 Aug 22, 2023

#241 in Cargo plugins

MIT license

95KB
626 lines

cargo-gha

cargo-gha

Version lock, cache, and run binaries from any Github Release assets. Pull in external tools and keep the versions in sync across your team, and forget installing globally.

Overview

A companion tool to cargo-run-bin, cargo-gha handles downloading and persisting tools from any Github Release assets, keeping versions available and in sync across your team.

asciicast

Install

Run the following to install cargo-gha, and ignore the cache directory in your project.

cargo install cargo-gha
echo ".gha/" >> .gitignore

Or if using cargo-run-bin, add it Cargo.toml.

[package.metadata.bin]
cargo-gha = { version = "1.0.0" }
cargo bin --sync-aliases
echo ".gha/" >> .gitignore

Usage

cargo-gha has an interactive experience to add assets to Cargo.toml. Before starting, you must specify the target architectures you and your team use.

[package.metadata.gha]
targets = ["x86_64-apple-darwin", "x86_64-unknown-linux-gnu"]

Once set, run the following to add an asset and follow the steps. As an example, let's add ProtocolBuffer's protoc.

cargo gha --add protocolbuffers/protobuf
# Or
cargo gha --add https://github.com/protocolbuffers/protobuf

Installed! protoc is now available through cargo-gha. Try it!

cargo gha protoc --help

cargo gha BINARY

Taking an example of protoc, running cargo gha protoc --help with install and cache the protoc binary with the specified version in Cargo.toml. All future executions will run instantly without an install step, and protoc can be used as you wish!

cargo gha --install

When pulling down a new repo, or adding a step to CI, cargo gha --install will install all assets that have not been cached which are configured in Cargo.toml.

License

MIT.

Dependencies

~32–48MB
~1M SLoC