[0.2.3]

Added

  • mix publish current — uploads the version already in mix.exs, without bumping, committing or tagging. It requires the tag to exist locally, to be on the remote, to point at the same commit in both, and HEAD to still be on it; the tarball is built from the working tree, so a HEAD past the tag would upload code the tag does not point at.
  • --yes skips the confirmation prompt.

Changed

  • Confirmation is asked once the checks have passed and before anything is written. Declining leaves the repository untouched.

Fixed

  • A release completes its upload rather than stopping after the push.

[0.2.0]

Added

  • A README install-snippet check, run as a gate before anything is written. A README naming ~> 0.1.1 when you publish 0.2.0 sends everyone following it to the old release, and nothing else catches that: the code compiles, the tests pass, the docs build.
  • Two modes, configured with plumb: [readme: ...] in project/0 and off by default. :satisfies requires the new version to satisfy the stated requirement and imposes no style; :exact requires the README to name ~> MAJOR.MINOR of the new version, which is what a 0.x project wants, since a minor bump there is a breaking change. :readme_path defaults to README.md.
  • readme joins format, test and docs as a value --skip accepts.
  • --allow-untracked, which lets untracked files through the clean-tree check. Tracked changes still block it, and untracked files are still not committed — only mix.exs is. The failure message names the flag.

The check reads the version being released, not the one in mix.exs, so a release that would leave the install instructions wrong fails before the bump rather than after the upload.

[0.1.0]

First release.

  • mix publish (major | minor | patch | VERSION) — verifies, bumps mix.exs, commits, tags, pushes, and runs mix hex.publish.

  • Every check runs before anything is written, so a failed run leaves the repository untouched: clean working tree, tag free locally, tag free on the remote, then mix format --check-formatted, mix test and mix docs.
  • The tag is pushed before the upload, so source_ref in the published docs resolves as soon as they are live.
  • The version is read from a @version attribute or a literal version: in the project config. A version that is not a literal string is refused rather than guessed at.
  • --dry-run, --remote NAME, --skip CHECKS.