Skip to content

Publishing new versions

Jose Emilio Labra Gayo edited this page Aug 12, 2024 · 15 revisions

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 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

Clone this wiki locally