Packages
rebar3_hex
2.2.0
7.1.0
7.0.11
7.0.10
7.0.9
7.0.8
7.0.7
7.0.6
7.0.5
7.0.4
7.0.3
7.0.2
7.0.1
7.0.0
6.11.9
6.11.8
6.11.7
6.11.6
6.11.5
6.11.4
6.11.3
6.11.2
6.11.1
6.11.0
6.10.3
6.10.2
6.10.1
6.10.0
6.9.6
6.9.5
6.9.4
6.9.3
6.9.2
6.9.1
6.9.0
6.8.0
6.7.0
6.6.0
6.5.0
6.4.0
6.3.0
6.2.0
6.1.0
6.0.0
4.1.0
4.0.0
3.1.0
3.0.0
2.5.1
2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
2.0.0
1.20.0
1.19.0
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.0
1.12.0
1.11.0
1.10.0
1.9.1
1.9.0
1.8.1
1.8.0
1.7.2
1.7.1
1.7.0
1.6.3
1.6.1
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
0.9.0
0.8.0
0.7.0
0.6.0
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.0
Hex.pm plugin for rebar3
Current section
Files
Jump to
Current section
Files
src/rebar3_hex_search.erl
-module(rebar3_hex_search).
-export([init/1,
do/1,
format_error/1]).
-include_lib("stdlib/include/ms_transform.hrl").
-include("rebar3_hex.hrl").
-define(PROVIDER, search).
-define(DEPS, []).
-spec init(rebar_state:t()) -> {ok, rebar_state:t()}.
init(State) ->
Provider = providers:create([
{name, ?PROVIDER},
{module, ?MODULE},
{namespace, hex},
{bare, true},
{deps, ?DEPS},
{example, "rebar3 hex search <term>"},
{short_desc, "Display packages matching the given search query"},
{desc, ""},
{opts, [{term, undefined, undefined, string, "Search term."}]}
]),
State1 = rebar_state:add_provider(State, Provider),
{ok, State1}.
-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}.
do(State) ->
rebar_packages:packages(State),
{Args, _} = rebar_state:command_parsed_args(State),
Term = proplists:get_value(term, Args, undefined),
ets:foldl(fun({Name, Vsns}, ok) when is_binary(Name) ->
case string:str(binary_to_list(Name), Term) of
0 ->
ok;
N when N >= 0 ->
Vsns1 = [binary_to_list(Vsn) || Vsn <- Vsns],
Vsns2 = string:join(Vsns1, ", "),
io:format("~s: ~s~n", [Name, Vsns2])
end;
(_, ok) ->
ok
end, ok, package_index),
{ok, State}.
-spec format_error(any()) -> iolist().
format_error(Reason) ->
io_lib:format("~p", [Reason]).