Skip to content

Automatic versioning of packages with mono-repos in mind

License

Notifications You must be signed in to change notification settings

DmitryDodzin/mol

Repository files navigation

This project is still in development and api may change

Mol

Mol - מו"ל (Motzi Laor) is a versioning and publishig toolset with much inspiration from atlassian/changesets but with no specific coupling to any package mananger or versioning scheme.
Simply manage the act of adding code to the codebase and the version change of the library without requiring commit message formatting nor multiple publishes for changes that can be summed up together

cargo-mol

Cargo + Semantic Versioning implemintation of Mol bundled with current version of Mol

cargo install mol
cargo mol --help

Most of the api is either cli wizard or very similar to changesets

101 Commands

Create a new changeset to describe the change you are plannig to add

cargo mol add -v patch -p packge1 -p package2 -m "I did some changes"

# what changed
# + .changeset/lorem_ipsum.md >
#   + ---
#   + packge1: patch
#   + package2: patch
#   + --- 
#   +
#   + I did some changes
#   +

Now when you want to update all the versions you requested. Packages will be updated by the most severe version that is requested, ie 0.1.4 + (patch + patch + minor) == 0.2.0

cargo mol version

# what changed
# - .changeset/lorem_ipsum.md
# - .changeset/lorem_minor.md
#   ~ CHANGELOG.md >
#   ~ # package1
#   ~
#   + ## 0.8.0
#   +
#   + ### Minor Changes
#   +
#   + - I did some minor changes i did
#   +
#   + ### Patch Changes
#   +
#   + - I did some changes
#   +
#   ~
#   ~ ## 0.7.1

mol --dry-run

You can always preview the changes you are about to add by runnig with --dry-run before the coomand

cargo mol --dry-run version

# Will print out all the changes that would have happend

Roadmap

  • Github action recipe
  • Plugins
  • mol-nodejs (npm/yarn)
  • mol-pip?
  • mol-maven?