/hex_erl

Reference implementation of Hex specifications

Primary LanguageErlangApache License 2.0Apache-2.0

hex_erl

Build Status

Reference implementation of Hex specifications: https://github.com/hexpm/specifications.

Usage

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

Installation

Rebar3

Add to rebar.config:

{deps, [
  {hex_erl, {git, "git://github.com/hexpm/hex_erl.git"}}
]}

Mix

Add to mix.exs:

defp deps do
  [
    {:hex_erl, github: "hexpm/hex_erl"}
  ]
end