Reference implementation of Hex specifications: https://github.com/hexpm/specifications.
Get all package names:
hex_repo:get_names().
%%=> {ok, #{package => [
%%=> #{name => <<"package1">>},
%%=> #{name => <<"package2">>},
%%=> ...]}}
Note: By default, we fetch data from repo.hex.pm using built-in httpc-based adapter.
See hex_repo:default_options()
for available configuration options.
Custom HTTP adapter must implement hex_http
behaviour.
Get all package versions:
hex_repo:get_versions().
%%=> {ok, #{packages => [
%%=> #{name => <<"package1">>, retired => [],
%%=> versions => [<<"1.0.0">>]},
%%=> #{name => <<"package2">>, retired => [],
%%=> versions => [<<"0.5.0">>]},
%%=> ...]}}
Get package releases:
hex_repo:get_package(<<"package1">>).
%%=> {ok, #{releases => [
%%=> #{checksum => ..., version => <<"0.5.0">>, dependencies => []}],
%%=> #{checksum => ..., version => <<"1.0.0">>, dependencies => []}],
%%=> ...]}}
Get package tarball:
{ok, Tarball, _Opts} = hex_repo:get_tarball(<<"package1">>, <<"1.0.0">>).
Unpack package tarball:
{ok, #{checksum := Checksum, contents := Contents, metadata := Metadata}} = hex_tarball:unpack(Tarball, memory).
Create package tarball:
{ok, {Tarball, Checksum}} = hex_tarball:create(Metadata, Contents).
Add to rebar.config
:
{deps, [
{hex_erl, {git, "git://github.com/hexpm/hex_erl.git"}}
]}
Add to mix.exs
:
defp deps do
[
{:hex_erl, github: "hexpm/hex_erl"}
]
end