Packages

A mix task that releases a package to Hex: every check runs before anything is written.

Current section

Files

Jump to
plumb CHANGELOG.md
Raw

CHANGELOG.md

# Changelog
## [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`.**