Rebar3_hex - a rebar3 plugin which bundles providers for interacting with hex.pm

As part of an initiative by the EEF build and packaging group we are pleased to announce rebar3_hex v7.

One of the main goals with v7 was to align with mix hex’s API as much as possible for a seamless and unified developer experience, and thus we had to introduce some breaking changes, mostly in regards to provider names, command line arguments, and switches. In addition, v7 initially includes some minor enhancements and bug fixes described below.

Check out the new docs

Additionally, if you find a bug please open an issue on github. We are particularly are interested in cases where an operation results in an unknown error or a full on crash. We want to eliminate these cases as much as possible.

Breaking changes

  • We no longer support implicit publishing of docs. With v7 you must either specify a docs provider in your hex config or use the --doc-dir switch on the publish provider in the case you use a documentation tool for which there is no provider. This also means we no longer support the doc attribute in .app.src.

  • The docs provider has been removed, but will be re-added in a later release for fetching docs for your application, dependencies, and opening them. You should now publish docs using the publish provider.

  • The --package and --docs switches on the publish provider have been removed in favor of the bare arguments docs and package. Likewise the --without-docs switch has been removed.

  • The revert task has been removed and is now simply a switch on the publish provider (i.e., rebar3 hex publish --revert)

  • The message argument is now a switch on the retire provider vs a bare argument.

  • The old repo provider has been renamed to organization. The api has been updated to align with mix hex.organization. See the organization docs for more information.

  • The key provider has been removed. All key tasks are now available on the user and organization providers. See either the rebar3 hex user docs or rebar3 hex organization docs

Enhancements

  • A build provider is now included so you can build packages and docs tarballs locally to inspect exactly what would be included in a release devoid of publishing.

  • An --app switch is now provided on the publish provider in case you’d rather not be prompted at runtime if publishing from within inside an umbrella.

  • The --dry-run switch on the publish provider now works with packages and docs (i.e., giving the --dry-run switch will truly result in a dry-run).

  • Updated docs which can now be found hex.pm

  • Improved UX around password prompts. Specifically, we will always ask for a confirmation of usernames (if blank), account passwords, and local passwords now.

  • When authenticating as a user we will now wait for a successful authentication before stating you are authenticated and prompting for a local password.

  • Added support for unretiring a package on the retire provider

  • DEBUG support has been removed in favor of DIAGNOSTIC support.

  • The include_files .app.src attribute is now include_paths, we continue to support include_files but it is recommend changing to include_paths

  • The exclude_files .app.src attribute is now exclude_paths, we continue to support exclude_files but it is recommend changing to exclude_paths

  • The exclude_regexps .app.src attribute is now exclude_patterns, we continue to support exclude_regexps but it is recommend changing to exclude_patterns

  • Improved messaging around which version of an app docs were published and if you try to publish docs for a version that is not on hexpm.

  • Display “no docs config found” as a warning vs an error.

Bug fixes

  • Fixed a case where by if the user provided no no user or email when prompted a crash would ensue.
  • Fixed publishing docs to private repositories (orgs).
  • Fixed underline emphasis of column names in tabled results.
  • Fixed organization listing for OTP 23, we would try to call ssh_file:encode/2 when it did not exist.
  • Fixed case where we didn’t abort if no apps were found on the publish provider.

What’s next?

There’s many more features to add, so keep your :eyes: peeled. Happy new year everyone! :partying_face:

11 Likes