Repository Header Image

CI: Status crates.io version CI: Status crates.io downloads

A bioinformatics workflow engine built on top of the Workflow Description Language (WDL).

Request Feature · Report Bug · ⭐ Consider starring the repo! ⭐

## 🎨 Features - **`sprocket analyzer`** Run Sprocket as a LSP server for IDE integration. - **`sprocket check`** Performs static analysis on WDL documents. - **`sprocket explain`** Explain lint rules. - **`sprocket format`** Formats WDL documents. - **`sprocket lint`** Performs static analysis on WDL documents with additional linting rules enabled. ## Guiding Principles - Provide a **high-performance** workflow execution engine capable of orchestrating massive bioinformatics workloads (the stated target is 20,000+ concurrent jobs). - Develop a suite of **modern development tools** that brings bioinformatics development on par with other modern languages (e.g., [`wdl-lsp`](https://github.com/stjude-rust-labs/wdl/tree/main/wdl-lsp)). - Maintain an **community-focused codebase** that enables a diverse set of contributors from academic, non-profit, and commercial organizations. - Build on an **open, domain-tailored standard** to ensure the toolset remains singularly focused on unencumbered innovation within bioinformatics. - Retain a **simple and accessible user experience** when complexity isn't warranted. ## 📚 Getting Started ### Installation Before you can install `sprocket`, you'll need to install [Rust](https://www.rust-lang.org/). We recommend using [rustup](https://rustup.rs/) to accomplish this. Once Rust is installed, you can install the latest version of `sprocket` by running the following command. ```bash cargo install sprocket ``` ## 🖥️ Development To bootstrap a development environment, please use the following commands. ```bash # Clone the repository git clone git@github.com:stjude-rust-labs/sprocket.git cd sprocket # Build the crate in release mode cargo build --release # Run the `sprocket` command line tool cargo run --release ``` ## 🚧️ Tests Before submitting any pull requests, please make sure the code passes the following checks (from the root directory). ```bash # Run the project's tests. cargo test --all-features # Run the tests for the examples. cargo test --examples --all-features # Ensure the project doesn't have any linting warnings. cargo clippy --all-features # Ensure the project passes `cargo fmt`. cargo fmt --check # Ensure the docs build. cargo doc ``` ## 🤝 Contributing Contributions, issues and feature requests are welcome! Feel free to check [issues page](https://github.com/stjude-rust-labs/sprocket/issues). ## 📝 License This project is licensed as either [Apache 2.0][license-apache] or [MIT][license-mit] at your discretion. Copyright © 2023-Present [St. Jude Children's Research Hospital](https://github.com/stjude). [license-apache]: https://github.com/stjude-rust-labs/sprocket/blob/main/LICENSE-APACHE [license-mit]: https://github.com/stjude-rust-labs/sprocket/blob/main/LICENSE-MIT