~djarb/gird

A command line tool and library for downloading release packages
instructions for static linking
ignore dist dir

refs

master
browse  log 

clone

read-only
https://git.sr.ht/~djarb/gird
read/write
git@git.sr.ht:~djarb/gird

You can also use your local clone with git send-email.

#Gird

Gird is a command-line tool for downloading release artifacts. Currently, it supports downloading from GitHub and GitLab releases, and there’s room to expand it to other, similar sources.

#Example: Downloading from GitHub

Given an artifact name, user name, and repository name, Gird will locate the most recent release for that repository, find a release artifact with a matching file name, and download it.

For example, to download the current rqlite release for linux on amd64, we can do the following:

$ gird linux-amd64 -e musl github rqlite rqlite

In that example, linux-amd64 is telling gird that we want a release file which contains “linux-amd64” in its file name, -e musl is telling it that we don’t want the variant that has “linux-amd64-musl“ in its file name even though it would otherwise match, github is telling it that it should source the file from a GitHub release, the first rqlite is telling it to look under the GitHub user called “rqlite” and the second rqlite is telling it that we want that user’s repository which is also called “rqlite”.

Gird will look through the current GitHub release for the specified repository, find a matching file (e.g. rqlite-v8.23.0-linux-amd64.tar.gz), and download it.

#It’s also a library

Gird can also be added to your Cargo.toml and used programmatically in other Rust programs. Each source for downloading release artifacts has its own module within the crate, containing specialized tools for interacting with that source.

#Community

If you encounter a bug, feel free to add a ticket to the Gird todo list.

If you would like to discuss Gird or request help, the gird-users mailing list is here for you.

Patches can be submitted via git send-email or git format-patch to ~djarb/gird-patches@lists.sr.ht (a.k.a the gird-patches mailing list). If you’re not familiar with the git send-email command, SourceHut provides a useful tutorial.

You could also clone the repository into your own SourceHut repo, make your changes, commit and push them to your cloned repo, and use the “Prepare a patchset” button on your repo page to send the changes. This is equivalent to GitHub’s pull request workflow.

#A Note on Static Linking

It can be convenient to statically link programs such as Gird which may be used in bootstrapping a working environment. Rust programs are mostly static by default, but on x86-64 Linux we can go fully static by adding an alias to the .cargo/config.toml file

[alias]
static = ["build", "--release", "--target", "x86_64-unknown-linux-gnu", "--config", "build.rustflags='-C target-feature=+crt-static'"]

which will enable us to compile statically linked release binaries with a simple

cargo static

The same trick works, with appropriate modification of the target identifier, on other CPU architectures and on Windows MSVC targets.