[0.2.5]

Fixed

  • Hex prompts reach the terminal.

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

[0.2.0]

Added

  • A README install-snippet check, run as a gate before anything is written. Configured with plumb: [readme: ...] in project/0, off by default. :satisfies requires the version being released to satisfy the requirement the README names; :exact requires the README to name ~> MAJOR.MINOR of it. :readme_path defaults to README.md. The version compared against is the one being released, not the one in mix.exs.
  • readme joins format, test and docs as a value --skip accepts.
  • --allow-untracked — untracked files pass the clean-tree check. Tracked changes still block it; untracked files are never committed.

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