A conda recipe generator for Rust crates, written in Rust.
Visit us at Fulcrum Genomics to learn more about how we can power your Bioinformatics with redskull and beyond.
redskull: "grayskull for Rust".
redskull is a conda recipe generator for rust recipes.
Usage for redskull follows:
OVERVIEW
redskull: grayskull for rust.
Specify the crates.io packages name. Redskull can also accept a github url.
Usage: redskull [OPTIONS] [ARGS]...
Arguments:
[ARGS]...
Crates.io package names or GitHub URLs
Options:
--maintainers <MAINTAINERS>
List of maintainers which will be added to the recipe
--output <OUTPUT>
Path to where the recipe will be created
-r, --recursive
Recursively run grayskull on missing dependencies
--tag <GITHUB_RELEASE_TAG>
If tag is specified, Redskull will build from release tag
--crate-version <CRATE_VERSION>
Override the crate version (defaults to the latest version on crates.io)
--bioconda
Add additional output for bioconda compatibility
--cargo-bundle-licenses <CARGO_BUNDLE_LICENSES>
Use cargo-bundle-licenses to generate THIRDPARTY.yml. Defaults to true when --bioconda is set, unless explicitly disabled
[possible values: true, false]
--host-dep <HOST_DEP>
Override: additional host dependencies (e.g., --host-dep zlib --host-dep openssl)
--run-dep <RUN_DEP>
Override: additional run dependencies (e.g., --run-dep samtools --run-dep minimap2)
--test-command <TEST_COMMAND>
Override: test commands (e.g., --test-command "mytool --version")
--skip-platform <SKIP_PLATFORM>
Override: skip platforms (e.g., --skip-platform osx)
--recipe-name <RECIPE_NAME>
Override the recipe name (defaults to the crates.io package name). Useful when the bioconda recipe name differs from the crate name
--source <SOURCE>
Source type: "github" (default) or "crates-io"
[default: github]
Possible values:
- github: Use GitHub release archives (default)
- crates-io: Use crates.io tarballs
--max-pin <MAX_PIN>
Override the max_pin value for run_exports (default: "x.x"). Use "x" for pre-1.0 tools
--refs-tags
Use refs/tags/ in GitHub archive URL template. Both forms resolve identically on GitHub; this controls the template text
--cargo-net-git-fetch
Set CARGO_NET_GIT_FETCH_WITH_CLI=true in build.sh. Needed when the build environment requires SSH for git fetches
--test-version
Use --version instead of --help for auto-generated test commands
--strip
Strip debug symbols from binaries after build
--license-family <LICENSE_FAMILY>
Emit license_family in the recipe. Defaults to true
[possible values: true, false]
--identifier <IDENTIFIER>
Add identifiers to the extra section (e.g., --identifier "doi:10.1234/foo")
--workspace-path <WORKSPACE_PATH>
Override workspace member path (e.g., --workspace-path crates/cmdline)
-h, --help
Print help (see a summary with '-h')
-V, --version
Print versionTo install with conda you must first install conda. Then, in your command line (and with the environment you wish to install redskull into active) run:
conda install -c bioconda redskullTo install with cargo you must first install rust. Which (On Mac OS and Linux) can be done with the command:
curl https://sh.rustup.rs -sSf | shThen, to install redskull run:
cargo install redskullFirst, clone the git repo:
git clone https://github.com/fg-labs/redskull.gitSecondly, if you do not already have rust development tools installed, install via rustup:
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | shThen build the toolkit in release mode:
cd redskull
cargo build --release
./target/release/redskull --helpredskull is developed in Rust and follows the conventions of using rustfmt and clippy to ensure both code quality and standardized formatting.
When working on redskull, before pushing any commits, please first run ./ci/check.sh and resolve any issues that are reported.
Releases are automated with release-plz, driven by Conventional Commits on main.
On every push to main, the release-plz workflow (.github/workflows/release-plz.yml) runs and does two things:
- Opens or updates a release PR that bumps the version in
Cargo.tomlandCargo.lockand updatesCHANGELOG.mdbased on commit messages since the last tag. - Publishes to crates.io and creates a GitHub release when a release PR is merged, tagging the commit and pushing the crate to crates.io.
The version bump is derived from commit messages since the last release:
feat:— minor bump (new functionality)fix:— patch bump (bug fix)feat!:orBREAKING CHANGE:— major bump (incompatible change)chore:,docs:,refactor:,test:,ci:— no bump on their own
This tool follows Semantic Versioning.
- Merge your changes to
mainusing Conventional Commit messages. - Review the release PR opened by
release-plz(version bump + changelog). - Merge the release PR.
release-plzpublishes to crates.io and creates the GitHub release automatically.
This repository uses crates.io Trusted Publishing (OIDC) instead of a long-lived
CARGO_REGISTRY_TOKEN secret. The release-plz workflow requests a short-lived token from crates.io via
GitHub's OIDC provider at publish time — nothing needs to be stored in the repository.
The workflow already sets id-token: write on the release job, which is required for OIDC.
Trusted Publishing cannot be used for the first version of a new crate —
the 0.1.0 release must be published manually:
cargo login # with a short-lived API token from https://crates.io/settings/tokens
cargo publish
cargo logoutThen tag the release on GitHub and delete the API token.
After 0.1.0 is on crates.io, configure a Trusted Publisher for this repository under
crates.io → Settings → Trusted Publishing:
- Repository owner:
fg-labs - Repository name:
redskull - Workflow filename:
release-plz.yml - Environment: (leave blank)
Once configured, merging a release PR on main will publish automatically.