@sjcrh/proteinpaint-rust
v2.178.0
Published
Rust-based utilities for proteinpaint
Readme
Rust-compiled utilities
This directory holds the source code for rust-compiled utilities.
Rust version
The current rust version is defined in rust/rust-toolchain.toml. When updating the rust version inside the rust docker image the container/rust/build.sh script parses the rust version from rust-toolchain.toml into container/rust/Dockerfile at runtime. This ensures consistency between local PP builds and the docker container in CI and production.
The Github Actions workflow file .github/workflows/CD-rust-build.yml and .github/workflows/CI-unit.yml also parses the rust version from the rust-toolchain.toml to ensure the correct rust version is used for compiling the current rust code.
When bumping the rust version and publish the new rust build env image using:
https://github.com/stjude/proteinpaint/actions/workflows/CD-publish-rust-bookworm-env-image.yml
For publishing updated rust binaries, use this workflow.
https://github.com/stjude/proteinpaint/actions/workflows/CD-publish-rust-binaries.yml
Code layout
All source code files should be directly under the src/ directory. For a source
code file to be compiled, create a [[bin]] entry for it in the Cargo.toml file:
[[bin]]
name="tool0"
path="src/tool0.rs"
[[bin]]
name="othertool1"
path="src/othertool1.rs"Note that the default package.autobins has been disabled, so that we avoid using
the src/bin subdirectory to hold uncompiled source code files. The convention in
the Proteinpaint project is to put bundled or compiled code under a bin/ folder,
which goes against rust cargo's assumptions of having source code under src/bin.
Using from nodejs
// Assuming a js or ts file from server/src
import { run_rust } from '@sjcrh/proteinpaint-rust'
// 'indel' may be replaced by any binary name as specified in Cargo.toml
const out = await run_rust('indel', input_data)Test
For running the tests written in nodejs, from the proteinpaint directory run,
npm run test:unit --workspace="rust"For running the tests written in native rust, from the proteinpaint/rust directory run.
cargo testFor running AI tests using cargo, they need to be run locally since CI does not have access to the LLM server. These tests are "ignored" in CI and need the ignored flag to be run. These tests must be run from the proteinpaint/rust directory. 3 tests wil be run using the command below. One each to see if the SJ and ollama server are accessible and the third one is unit test for the actual ai chatbot.
time cargo test -- --ignored --nocaptureBuild
npm run build # cargo build --releaseThe compiled dependencies and target binaries will be generated under ./target/release.
Release
Use Github Actions to coordinate the release of related package updates.
The package versioning, build, and deployment uses the standard npm tooling under the hood
(version, pack, and publish, respectively).
