Skip to content

chore: fix Hex package metadata so the package can be published - #68

Merged
Taure merged 2 commits into
masterfrom
chore/hex-license-metadata
Aug 8, 2026
Merged

chore: fix Hex package metadata so the package can be published#68
Taure merged 2 commits into
masterfrom
chore/hex-license-metadata

Conversation

@Taure

@Taure Taure commented Aug 8, 2026

Copy link
Copy Markdown
Contributor

Prep for publishing rebar3_nova to Hex.

The licence problem

src/rebar3_nova.app.src declared:

{licenses, ["Apache 2.0"]}

That is not an SPDX identifier, so Hex does not recognise it as the Apache licence. The correct id is Apache-2.0 — which nova itself already uses.

The LICENSE file was already fine: complete Apache 2.0 text with the copyright line filled in (Copyright 2020, Daniel Widgren), and it is included in the package tarball. No change needed there.

Also fixed

  • {links, []} was empty — now points at the GitHub repo, so the package page has a source link.
  • {description, "A rebar plugin"} was a placeholder — this is the one-line blurb shown in Hex search results, so it now describes what the plugin actually does.

{vsn, git} is untouched; version still comes from the git tag.

Verified

rebar3 hex build succeeds and the resulting metadata.config carries:

{<<"licenses">>,[<<"Apache-2.0">>]}.
{<<"links">>,[{<<"GitHub">>,<<"https://github.com/novaframework/rebar3_nova">>}]}.
{<<"description">>,<<"Rebar3 plugin for scaffolding and managing Nova framework projects">>}.
{<<"version">>,<<"0.13.1">>}.

LICENSE is present in the packaged files list.

fmt --check, xref, ct (27/27) all pass.

Taure added 2 commits August 8, 2026 10:54
`{licenses, ["Apache 2.0"]}` is not an SPDX identifier, so Hex would not
recognise the licence. The correct id is `Apache-2.0`, which is what nova
itself already uses.

Also fill in the empty `links` and replace the placeholder description,
both of which are surfaced on the package page.

The LICENSE file itself was already correct: full Apache 2.0 text with
the copyright line filled in, and it is included in the package files.
rebar.config leaves nova and enotify unversioned, so `rebar3 hex build`
derives the published requirement from rebar.lock. The lock still pinned
nova 0.10.2, which becomes a `~>0.10.2` requirement on Hex - that is
`>= 0.10.2, < 0.11.0`, so anyone on current nova (0.15.3) hits a
resolution conflict and cannot install the plugin at all.

Full clean relock rather than a targeted upgrade, to avoid leaving stale
transitive skew:

  nova           0.10.2 -> 0.15.3
  cowlib         2.13.0 -> 2.19.0
  ranch           1.8.0 -> 2.2.0
  jhn_stdlib      5.1.0 -> 5.11.2
  routing_tree   1.0.9  -> 1.0.11
  thoas           1.2.0 -> 1.2.1
  uuid_erl, quickrand, pmod_transform dropped (no longer reachable)

Smoke-tested against the new lock: compile, xref, and ct 27/27 all clean.
@Taure

Taure commented Aug 8, 2026

Copy link
Copy Markdown
Contributor Author

Second commit added, because the licence was not the only thing blocking a usable publish.

rebar3_nova is already on Hex and the live package page currently shows the broken metadata this PR fixes:

{"description":"A rebar plugin","licenses":["Apache 2.0"],"links":{}}

While confirming that, I found a harder blocker. rebar.config leaves nova unversioned, so rebar3 hex build derives the published requirement from rebar.lock - which still pinned nova 0.10.2. That publishes as ~>0.10.2 (>= 0.10.2, < 0.11.0), while nova on Hex is at 0.15.3. Anyone on current nova would get a resolution conflict and simply could not install the plugin.

Did a full clean relock rather than a targeted upgrade, per the transitive-skew rule:

dep before after
nova 0.10.2 0.15.3
cowlib 2.13.0 2.19.0
ranch 1.8.0 2.2.0
jhn_stdlib 5.1.0 5.11.2
routing_tree 1.0.9 1.0.11
thoas 1.2.0 1.2.1

uuid_erl, quickrand and pmod_transform drop out - nova no longer pulls them.

Smoke-tested against the new lock: compile clean, xref clean (so the plugin's calls into the nova API still resolve across the 0.10 -> 0.15 jump), ct 27/27.

Also worth noting for whenever you publish: the last Hex release is 0.8.0 while the repo is at v0.13.1.

@Taure
Taure merged commit caa4ba3 into master Aug 8, 2026
29 checks passed
@Taure
Taure deleted the chore/hex-license-metadata branch August 8, 2026 09:24
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant