Publishing new versions - rudof-project/rudof GitHub Wiki

Requisites

sudo apt install libssl-dev

NOTE (2026-02-20): Review/check if this is still necessary...

Automatic way

  • First time: install cargo workspaces so you can use cargo ws command.
  • Each time:
    • Run cargo ws version to change to a new version. It will update the Cargo.toml file in each workspace and push the tag to github. See this help for more information.
    • Run cargo ws publish --publish-as-is to publish the changed workspaces in crates.io. See this help. I think I could skip the previous command and try to do all of this in one step...but when it fails, it is difficult to keep track of what failed and I had to publish manually.

Manual way

At this moment (until I know how to automate it) the process to publish a new version is a bit manual. It requires two steps:

  • Update the versions in cargo.toml of the different crates.
  • Publish each crate individually taking care of the dependency order. The command to publish a crate is:
cargo publish -p module

The dependency order at this moment is:

  1. iri_s
  2. prefixmap
  3. srdf
  4. rbe
  5. rbe_testsuite
  6. shex_ast
  7. shapemap
  8. shex_compact
  9. shex_validation
  10. shex_testsuite
  11. shacl_ast
  12. dctap
  13. rudof-cli

After publishing each crate, add a tag for the release using:

git tag -a v0.1.0 -m "v0.1.0"
git push origin v0.1.0 

And finally create the release from github interface.

Note

To increment all the versions of the crates at once, it should be possible to use:

cargo ws version

But it requires to have cargo-workspaces installed which is currently failing in my WSL.

All this depends on issue 1169 from Cargo project

Once the crates have been published, we publish manually the release from the tag in the github web interface.