From 570889843d6a2d346454bb7bfcec4876c8dc20c7 Mon Sep 17 00:00:00 2001 From: Marko Mindek Date: Tue, 16 Jan 2024 22:25:26 +0100 Subject: [PATCH 1/6] completion provider --- THANKS | 1 + apps/rebar/src/rebar.app.src.script | 1 + apps/rebar/src/rebar_completion.erl | 36 +++++ apps/rebar/src/rebar_completion_bash.erl | 113 ++++++++++++++ apps/rebar/src/rebar_prv_completion.erl | 165 +++++++++++++++++++++ apps/rebar/test/rebar_completion_SUITE.erl | 68 +++++++++ 6 files changed, 384 insertions(+) create mode 100644 apps/rebar/src/rebar_completion.erl create mode 100644 apps/rebar/src/rebar_completion_bash.erl create mode 100644 apps/rebar/src/rebar_prv_completion.erl create mode 100644 apps/rebar/test/rebar_completion_SUITE.erl diff --git a/THANKS b/THANKS index 0ec5ab0ba..393ce6fda 100644 --- a/THANKS +++ b/THANKS @@ -146,3 +146,4 @@ Justin Wood Guilherme Andrade Manas Chaudhari Luís Rascão +Marko Minđek diff --git a/apps/rebar/src/rebar.app.src.script b/apps/rebar/src/rebar.app.src.script index ec2ee0ca1..08ac0b561 100644 --- a/apps/rebar/src/rebar.app.src.script +++ b/apps/rebar/src/rebar.app.src.script @@ -52,6 +52,7 @@ rebar_prv_clean, rebar_prv_common_test, rebar_prv_compile, + rebar_prv_completion, rebar_prv_cover, rebar_prv_deps, rebar_prv_deps_tree, diff --git a/apps/rebar/src/rebar_completion.erl b/apps/rebar/src/rebar_completion.erl new file mode 100644 index 000000000..5cdd58043 --- /dev/null +++ b/apps/rebar/src/rebar_completion.erl @@ -0,0 +1,36 @@ +-module(rebar_completion). + +-export([generate/2]). + +-type arg_type() :: atom | binary | boolean | float | interger | string. + +-type cmpl_arg() :: #{short => char() | undefined, + long => string() | undefined, + type => arg_type(), + help => string()}. + +-type cmpl_cmd() :: #{name := string(), + help := string() | undefined, + args := [cmpl_arg()], + cmds => [cmpl_cmd()]}. + +-type cmpl_opts() :: #{aliases => [string()], + file => file:filename(), + hints => boolean(), + %% TODO support fish and maybe some more shells + shell => bash | zsh, + type_hints => boolean()}. +-export([prelude/1]). + +-export_type([cmpl_opts/0, cmpl_cmd/0, cmpl_arg/0]). + +-callback generate([cmpl_cmd()], cmpl_opts()) -> iolist(). + +-spec generate([cmpl_cmd()], cmpl_opts()) -> string(). +generate(Commands, #{shell:=bash}=CmplOpts) -> + rebar_completion_bash:generate(Commands,CmplOpts); +generate(Commands, #{shell:=zsh}=CmplOpts) -> + rebar_completion_zsh:generate(Commands,CmplOpts). + +prelude(#{shell:=Shell}) -> + "# "++atom_to_list(Shell)++" completion file for rebar3 (autogenerated by rebar3).\n". diff --git a/apps/rebar/src/rebar_completion_bash.erl b/apps/rebar/src/rebar_completion_bash.erl new file mode 100644 index 000000000..c2bf6738f --- /dev/null +++ b/apps/rebar/src/rebar_completion_bash.erl @@ -0,0 +1,113 @@ +%% @doc Completion file generator for bash +%% @end +-module(rebar_completion_bash). + +-behavior(rebar_completion). + +-export([generate/2]). + +-define(str(N), integer_to_list(N)). + +-spec generate([rebar_completion:cmpl_cmd()], rebar_completion:cmpl_opts()) -> iolist(). +generate(Commands, #{shell:=bash}=CmplOpts) -> + [rebar_completion:prelude(CmplOpts), + io_lib:nl(), + main(Commands, CmplOpts), + complete(CmplOpts), + io_lib:nl()]. + +cmd_clause(Cmd) -> + nested_cmd_clause(Cmd, [], 1). + +-spec nested_cmd_clause(rebar_completion:cmpl_cmd(), [string()], pos_integer()) -> iolist(). +nested_cmd_clause(#{name:=Name,arguments:=Args,commands:=Cmds},Prevs,Depth) -> + Opts = [{S,L} || #{short:=S, long:=L} <- Args], + {Shorts0,Longs0} = lists:unzip(Opts), + Defined = fun(Opt) -> Opt =/= undefined end, + Shorts = lists:filter(Defined, Shorts0), + Longs = lists:filter(Defined, Longs0), + SOpts = lists:join(" ", + [[$-,S] || S <- Shorts]), + LOpts = lists:join(" ", + ["--"++L || L <- Longs]), + Cmdsnvars = lists:join(" ", + [N || #{name:=N} <- Cmds]), + IfBody = match_prev_if_body([Name | Prevs]), + ClauseHead = ["elif [[ ",IfBody," ]] ; then\n"], + ClauseBody = [" sopts=\"",SOpts,"\"\n", + " lopts=\"",LOpts,"\"\n", + " cmdsnvars=\"",Cmdsnvars,"\"\n"], + Nested = [nested_cmd_clause(C, [Name | Prevs], Depth+1) || C <- Cmds], + [ClauseHead,ClauseBody,Nested]. + +match_prev_if_body([P | Rest]) -> + lists:join(" && ", + do_match_prev_if_body([P | Rest],1)). + +do_match_prev_if_body([],_) -> + []; +do_match_prev_if_body([P | Rest],Cnt) -> + [["${prev",?str(Cnt),"} == ",P] | do_match_prev_if_body(Rest,Cnt+1)]. + +main(Commands, #{shell:=bash, aliases:=Aliases}) -> + MaxDepth=cmd_depth(Commands,1,0), + CmdNames = [Name || #{name:=Name} <- Commands], + Triggers = ["rebar3" | Aliases], + TriggerConds = [["${prev1} == \"",T,"\""] || T <- Triggers], + Trigger = lists:join(" || ", TriggerConds), + IfTriggerThen = ["if [[ ",Trigger," ]] ; then\n"], + + ["_rebar3_ref_idx() {\n", + " startc=$1\n", + " # is at least one of the two previous words a flag?\n", + " prev=${COMP_CWORD}-${startc}+1\n", + " if [[ ${COMP_WORDS[${prev}]} == -* || ${COMP_WORDS[${prev}-1]} == -* ]] ; then\n", + " startc=$((startc+1))\n", + " _rebar3_ref_idx $startc\n", + " fi\n", + " return $startc\n", + "}\n", + "\n", + "_rebar3(){\n", + " local cur sopts lopts cmdsnvars refidx \n", + " local ",lists:join(" ", ["prev"++?str(I) || I <- lists:seq(1, MaxDepth)]),"\n", + " COMPREPLY=()\n", + " _rebar3_ref_idx ",?str(MaxDepth),"\n", + " refidx=$?\n", + " cur=\"${COMP_WORDS[COMP_CWORD]}\"\n", + prev_definitions(MaxDepth,1), + " ",IfTriggerThen, + " sopts=\"-h -v\"\n" + " lopts=\"--help --version\"\n", + " cmdsnvars=\"",lists:join(" \\\n", CmdNames),"\"\n", + " ",[cmd_clause(Cmd) || Cmd <- Commands], + " fi\n", + " COMPREPLY=( $(compgen -W \"${sopts} ${lopts} ${cmdsnvars} \" -- ${cur}) )\n", + " if [ -n \"$COMPREPLY\" ] ; then\n", + " # append space if matched\n", + " COMPREPLY=\"${COMPREPLY} \"\n", + " # remove trailing space after equal sign\n", + " COMPREPLY=${COMPREPLY/%= /=}\n", + " fi\n", + " return 0\n", + "}\n"]. + +prev_definitions(MaxDepth, Cnt) when (Cnt-1)=:=MaxDepth -> + []; +prev_definitions(MaxDepth, Cnt) -> + P = [" prev",?str(Cnt),"=\"${COMP_WORDS[COMP_CWORD-${refidx}+",?str((MaxDepth-Cnt)),"]}\"\n"], + [P | prev_definitions(MaxDepth,Cnt+1)]. + +cmd_depth([], _, Max) -> + Max; +cmd_depth([#{commands:=[]} | Rest],Depth,Max) -> + cmd_depth(Rest,Depth,max(Depth,Max)); +cmd_depth([#{commands:=Cmds} | Rest],Depth, Max) -> + D = cmd_depth(Cmds, Depth+1, Max), + cmd_depth(Rest, Depth, max(D,Max)); +cmd_depth([_ | Rest],Depth,Max) -> + cmd_depth(Rest,Depth,max(Depth,Max)). + +complete(#{shell:=bash, aliases:=Aliases}) -> + Triggers = ["rebar3" | Aliases], + [["complete -o nospace -F _rebar3 ", Trigger, "\n"] || Trigger <- Triggers]. diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl new file mode 100644 index 000000000..472eea182 --- /dev/null +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -0,0 +1,165 @@ +%% @doc Generates shell completion files based on available providers and their opts. +%% @end +-module(rebar_prv_completion). + +-behaviour(provider). + +-export([init/1, + do/1, + format_error/1]). + +-include_lib("providers/include/providers.hrl"). +-include("rebar.hrl"). + +-define(PROVIDER, completion). +-define(DEPS, [app_discovery]). +-define(DEF_SHELL, bash). + +%% =================================================================== +%% Public API +%% =================================================================== + +-spec init(rebar_state:t()) -> {ok, rebar_state:t()}. +init(State) -> + AliasesHelp = "Comma separated list of OS level aliases on which rebar3 completion will be triggered (e.g. \"rebar\" or \"r3\").", + AliasesOpt = {aliases, $a, "aliases", string, AliasesHelp}, + + FileHelp = "Completion file name. Relative to \"_build/\".", + FileOpt = {file, $f, "file", string, FileHelp}, + + ShellHelp = "Shell type, 'bash' or 'zsh'.", + ShellOpt = {shell, $s, "shell", atom, ShellHelp}, + + Provider = providers:create([{name, ?PROVIDER}, + {module, ?MODULE}, + {bare, true}, + {deps, ?DEPS}, + {example, "rebar3 completion"}, + {short_desc, "Generate completion file for your shell."}, + {desc, "Generate completion file for your shell."}, + {opts, [AliasesOpt, FileOpt, ShellOpt]}]), + State1 = rebar_state:add_provider(State,Provider), + {ok, State1}. + +-spec do(rebar_state:t()) -> {ok, rebar_state:t()} | {error, string()}. +do(State) -> + DefaultOpts = #{aliases => [], + file => "_rebar3", + shell => detect_shell()}, + {CliOptsList, _} = rebar_state:command_parsed_args(State), + CliOpts = maps:from_list(CliOptsList), + Conf = maps:from_list(rebar_state:get(State, completion, [])), + %% Opts passed in CLI override config + CmplOpts0 = maps:merge(DefaultOpts, Conf), + CmplOpts = maps:merge(CmplOpts0, CliOpts), + + Providers0 = rebar_state:providers(State), + BareProviders = lists:filter(fun(P) -> provider_get(P, bare) end, Providers0), + ByNamespace = maps:groups_from_list(fun(P) -> provider_get(P, namespace) end, BareProviders), + Cmds0 = maps:fold( + fun(NS,Ps,CmdAcc) -> namespace_to_cmpl_cmds(NS, Ps)++CmdAcc end, + [], + ByNamespace), + Cmds = [oracle(Cmd, CmplOpts, State) || Cmd <- Cmds0], + Compl = rebar_completion:generate(Cmds, CmplOpts), + write_completion(Compl,State,CmplOpts), + {ok, State}. + +detect_shell() -> + case os:getenv("SHELL") of + false -> + ?DIAGNOSTIC("SHELL variable not set, default shell will be used.", + []), + ?DEF_SHELL; + Path -> + to_shell(filename:basename(Path)) + end. + +to_shell("bash") -> bash; +to_shell("zsh") -> zsh; +to_shell(Unsupp) -> + ?WARN("Unsupported shell found: ~p, default shell will be used.", + [Unsupp]), + ?DEF_SHELL. + +-spec namespace_to_cmpl_cmds(atom(), [providers:t()]) -> [rebar_completion:cmpl_cmd()]. +namespace_to_cmpl_cmds(default,Providers) -> + lists:map(fun(P)->provider_to_cmpl_cmd(P) end,Providers); +namespace_to_cmpl_cmds(Namespace,Providers) -> + Name = atom_to_list(Namespace), + [#{name=>Name, + commands=>lists:map(fun(P)->provider_to_cmpl_cmd(P) end, Providers), + arguments=>[], + help=>Name++" namespace"}]. + +-spec provider_to_cmpl_cmd(providers:t()) -> rebar_completion:cmpl_cmd(). +provider_to_cmpl_cmd(Provider) -> + Opts = providers:opts(Provider), + Name = providers:impl(Provider), + Cmd = getopt_to_cmpl_cmd(atom_to_list(Name),Opts), + Help = provider_get(Provider, short_desc), + Cmd#{help=>Help}. + +-spec getopt_to_cmpl_cmd(string(), [tuple()]) -> rebar_completion:cmpl_cmd(). +getopt_to_cmpl_cmd(Name, Opts) -> + Args = [#{short=>S, + long=>L, + type=>cmpl_arg_type(Spec), + help=>H} || {_,S,L,Spec,H} <- Opts], + #{name => Name, + arguments => Args, + commands => [], + help => undefined}. + +cmpl_arg_type({Type,_Default}) -> + Type; +cmpl_arg_type(Type) -> + Type. + +%% ad-hoc injection of data for some known providers! +-spec oracle(rebar_completion:cmpl_cmd(), + rebar_completion:cmpl_opts(), + rebar_state:t()) -> rebar_completion:cmpl_cmd(). +oracle(#{name:="as"}=Cmd, _CmplOpts, State) -> + %% profile completion + ConfigProfiles = rebar_opts:get(rebar_state:opts(State), profiles, []), + Args = [#{short=>undefined, + long=>atom_to_list(ProfileName), + help=>undefined, + type=>string} || {ProfileName,_} <- ConfigProfiles], + Cmd#{arguments=>Args}; +oracle(Cmd,_,_) -> + Cmd. + +-spec write_completion(iolist(), rebar_state:t(), rebar_completion:cmpl_opts()) -> ok. +write_completion(CompletionStr, State, #{shell:=Shell, file:=Filename}) -> + BaseDir = rebar_dir:base_dir(State), + Dest = filename:join(BaseDir, Filename), + case filelib:ensure_dir(Dest) of + ok -> + ?DIAGNOSTIC("Writing completion file for ~p shell to: ~p~n", + [Shell, Dest]), + case file:write_file(Dest, CompletionStr, [write, raw]) of + ok -> + ok; + {error,Err} -> + throw(?PRV_ERROR({error_writing_file,Dest,Err})) + end; + {error,Err} -> + throw(?PRV_ERROR({error_creating_dir,filename:dirname(Dest),Err})) + end. + + +%% for some reason providers don't expose some of their attributes via API +provider_get(P, bare) -> + element(5, P); +provider_get(P, short_desc) -> + element(8, P); +provider_get(P, namespace) -> + element(12, P). + +-spec format_error(any()) -> iolist(). +format_error({error_writing_file,File,Err}) -> + io_lib:format("Error occurred when trying to write into ~p file.~nReason: ~p~n", [File,Err]); +format_error({error_creating_dir,Dir,Err}) -> + io_lib:format("Error occurred when trying to create dir: ~p.~nReason: ~p~n", [Dir,Err]). diff --git a/apps/rebar/test/rebar_completion_SUITE.erl b/apps/rebar/test/rebar_completion_SUITE.erl new file mode 100644 index 000000000..96a8d6d71 --- /dev/null +++ b/apps/rebar/test/rebar_completion_SUITE.erl @@ -0,0 +1,68 @@ +-module(rebar_completion_SUITE). + +-compile([export_all, nowarn_export_all]). + +-include_lib("common_test/include/ct.hrl"). + +suite() -> + []. + +all() -> + [test_competion_gen, check_bash]. + +groups() -> + []. + +init_per_suite(Config) -> + Shells = [bash], + ComplFile = compl_file(Config), + ok = filelib:ensure_dir(ComplFile), + [{compl_file, ComplFile}, {shells, Shells} | Config]. + +end_per_suite(_Config) -> + ok. + +init_per_testcase(_, Config) -> + rebar_test_utils:init_rebar_state(Config, "completion_"). + +end_per_testcase(_, _Config) -> + ok. + +%% test cases + +test_competion_gen(Config) -> + Shells = ?config(shells, Config), + ComplFile = ?config(compl_file, Config), + lists:foreach(fun(Shell) -> + file:delete(ComplFile), + completion_gen(Config, #{shell=>Shell, file=>ComplFile}), + {Shell, true} = {Shell,filelib:is_file(ComplFile)} + end, + Shells). + +check_bash(Config) -> + ComplFile = ?config(compl_file, Config), + Aliases = ["rebar", "r3"], + Opts = #{shell => bash, + file => ComplFile, + aliases => Aliases}, + completion_gen(Config, Opts), + {ok, Completion} = file:read_file(ComplFile), + %% function definition + {match, _} = re:run(Completion, "_rebar3\\(\\)\\{"), + %% aliases + CompleteCmd = "complete -o nospace -F _rebar3 ", + lists:foreach(fun(Alias) -> + {Alias, {match, _}} = {Alias, re:run(Completion, CompleteCmd++Alias++"\n")} + end, + ["rebar3" | Aliases]). + +%% helpers + +completion_gen(Config, CmplOpts) -> + CmplConf = maps:to_list(CmplOpts), + Res = rebar_test_utils:run_and_check(Config, [{completion,CmplConf}], ["completion"], return), + {ok, _} = Res. + +compl_file(Config) -> + filename:absname(filename:join(?config(priv_dir,Config), "_rebar3")). From ceac46eebb69b0abb1349bbd2bf6a80edab25a4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Marko=20Min=C4=91ek?= Date: Sat, 27 Jan 2024 17:25:09 +0100 Subject: [PATCH 2/6] debug msg Co-authored-by: Fred Hebert --- apps/rebar/src/rebar_prv_completion.erl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl index 472eea182..1495f7966 100644 --- a/apps/rebar/src/rebar_prv_completion.erl +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -137,7 +137,7 @@ write_completion(CompletionStr, State, #{shell:=Shell, file:=Filename}) -> Dest = filename:join(BaseDir, Filename), case filelib:ensure_dir(Dest) of ok -> - ?DIAGNOSTIC("Writing completion file for ~p shell to: ~p~n", + ?DEBUG("Writing completion file for ~p shell to: ~p~n", [Shell, Dest]), case file:write_file(Dest, CompletionStr, [write, raw]) of ok -> From 2340de2abfad8328a77ab511c46ab01f32fcd0ec Mon Sep 17 00:00:00 2001 From: Marko Mindek Date: Mon, 29 Jan 2024 05:38:46 +0100 Subject: [PATCH 3/6] `as` cmpl fixed, `do` cmpl, key rename --- apps/rebar/src/rebar_completion.erl | 4 +- apps/rebar/src/rebar_completion_bash.erl | 6 +- apps/rebar/src/rebar_prv_completion.erl | 24 +- rebar3.crashdump | 1149 ++++++++++++++++++++++ 4 files changed, 1167 insertions(+), 16 deletions(-) create mode 100644 rebar3.crashdump diff --git a/apps/rebar/src/rebar_completion.erl b/apps/rebar/src/rebar_completion.erl index 5cdd58043..2c5f88c99 100644 --- a/apps/rebar/src/rebar_completion.erl +++ b/apps/rebar/src/rebar_completion.erl @@ -16,10 +16,8 @@ -type cmpl_opts() :: #{aliases => [string()], file => file:filename(), - hints => boolean(), %% TODO support fish and maybe some more shells - shell => bash | zsh, - type_hints => boolean()}. + shell => bash | zsh}. -export([prelude/1]). -export_type([cmpl_opts/0, cmpl_cmd/0, cmpl_arg/0]). diff --git a/apps/rebar/src/rebar_completion_bash.erl b/apps/rebar/src/rebar_completion_bash.erl index c2bf6738f..8ffad0849 100644 --- a/apps/rebar/src/rebar_completion_bash.erl +++ b/apps/rebar/src/rebar_completion_bash.erl @@ -20,7 +20,7 @@ cmd_clause(Cmd) -> nested_cmd_clause(Cmd, [], 1). -spec nested_cmd_clause(rebar_completion:cmpl_cmd(), [string()], pos_integer()) -> iolist(). -nested_cmd_clause(#{name:=Name,arguments:=Args,commands:=Cmds},Prevs,Depth) -> +nested_cmd_clause(#{name:=Name,args:=Args,cmds:=Cmds},Prevs,Depth) -> Opts = [{S,L} || #{short:=S, long:=L} <- Args], {Shorts0,Longs0} = lists:unzip(Opts), Defined = fun(Opt) -> Opt =/= undefined end, @@ -100,9 +100,9 @@ prev_definitions(MaxDepth, Cnt) -> cmd_depth([], _, Max) -> Max; -cmd_depth([#{commands:=[]} | Rest],Depth,Max) -> +cmd_depth([#{cmds:=[]} | Rest],Depth,Max) -> cmd_depth(Rest,Depth,max(Depth,Max)); -cmd_depth([#{commands:=Cmds} | Rest],Depth, Max) -> +cmd_depth([#{cmds:=Cmds} | Rest],Depth, Max) -> D = cmd_depth(Cmds, Depth+1, Max), cmd_depth(Rest, Depth, max(D,Max)); cmd_depth([_ | Rest],Depth,Max) -> diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl index 1495f7966..6f7107112 100644 --- a/apps/rebar/src/rebar_prv_completion.erl +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -60,7 +60,11 @@ do(State) -> fun(NS,Ps,CmdAcc) -> namespace_to_cmpl_cmds(NS, Ps)++CmdAcc end, [], ByNamespace), - Cmds = [oracle(Cmd, CmplOpts, State) || Cmd <- Cmds0], + Cmds1 = [oracle(Cmd, CmplOpts, State) || Cmd <- Cmds0], + {[Do],RestCmds} = lists:partition( + fun(Cmd) -> maps:get(name, Cmd) =:= "do" end, + Cmds1), + Cmds = [Do#{cmds:=RestCmds} | RestCmds], Compl = rebar_completion:generate(Cmds, CmplOpts), write_completion(Compl,State,CmplOpts), {ok, State}. @@ -88,8 +92,8 @@ namespace_to_cmpl_cmds(default,Providers) -> namespace_to_cmpl_cmds(Namespace,Providers) -> Name = atom_to_list(Namespace), [#{name=>Name, - commands=>lists:map(fun(P)->provider_to_cmpl_cmd(P) end, Providers), - arguments=>[], + cmds=>lists:map(fun(P)->provider_to_cmpl_cmd(P) end, Providers), + args=>[], help=>Name++" namespace"}]. -spec provider_to_cmpl_cmd(providers:t()) -> rebar_completion:cmpl_cmd(). @@ -107,8 +111,8 @@ getopt_to_cmpl_cmd(Name, Opts) -> type=>cmpl_arg_type(Spec), help=>H} || {_,S,L,Spec,H} <- Opts], #{name => Name, - arguments => Args, - commands => [], + args => Args, + cmds => [], help => undefined}. cmpl_arg_type({Type,_Default}) -> @@ -123,11 +127,11 @@ cmpl_arg_type(Type) -> oracle(#{name:="as"}=Cmd, _CmplOpts, State) -> %% profile completion ConfigProfiles = rebar_opts:get(rebar_state:opts(State), profiles, []), - Args = [#{short=>undefined, - long=>atom_to_list(ProfileName), - help=>undefined, - type=>string} || {ProfileName,_} <- ConfigProfiles], - Cmd#{arguments=>Args}; + Cmds = [#{name=>atom_to_list(ProfileName), + help=>"", + cmds=>[], + args=>[]} || {ProfileName,_} <- ConfigProfiles], + Cmd#{cmds=>Cmds}; oracle(Cmd,_,_) -> Cmd. diff --git a/rebar3.crashdump b/rebar3.crashdump new file mode 100644 index 000000000..e6eea2e27 --- /dev/null +++ b/rebar3.crashdump @@ -0,0 +1,1149 @@ +Error: function_clause +[{rebar_completion_bash,nested_cmd_clause, + [#{args => [],name => "do", + help => + "Higher order provider for running multiple tasks in a sequence.", + cmds => + [#{args => [],name => "lfe", + help => "lfe namespace", + cmds => + [#{args => [],name => "versions", + help => "Get various versions", + cmds => []}, + #{args => [],name => "run-release", + help => "Run an LFE release", + cmds => []}, + #{args => [],name => "run-escript", + help => "Run an LFE escript", + cmds => []}, + #{args => + [#{short => 109,type => string, + long => "main", + help => + "Provide project file that contains a main function"}], + name => "run", + help => + "Run the project's main function.", + cmds => []}, + #{args => + [#{short => undefined, + type => atom,long => "name", + help => + "Gives a long name to the node."}, + #{short => undefined, + type => atom,long => "sname", + help => + "Gives a short name to the node."}, + #{short => undefined, + type => atom, + long => "setcookie", + help => + "Sets the cookie if the node is distributed."}, + #{short => undefined, + type => string, + long => "script", + help => + "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."}, + #{short => undefined, + type => string,long => "apps", + help => + "A list of apps to boot before starting the REPL. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."}, + #{short => 114,type => atom, + long => "relname", + help => + "Name of the release to use as a template for the REPL session"}, + #{short => 118,type => string, + long => "relvsn", + help => + "Version of the release to use for the shell session"}, + #{short => undefined, + type => boolean, + long => "start_clean", + help => + "Cancel any applications in the 'apps' list or release."}, + #{short => undefined, + type => string, + long => "env_file", + help => + "Path to file of os environment variables to setup before expanding vars in config files."}, + #{short => undefined, + type => string, + long => "user_drv_args", + help => + "Arguments passed to user_drv start function for creating custom shells."}], + name => "repl", + help => + "Run an LFE REPL with project apps and deps in path.", + cmds => []}, + #{args => [],name => "release", + help => + "Build a release for the LFE project", + cmds => []}, + #{args => + [#{short => undefined, + type => string,long => "app", + help => + "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, + #{short => undefined, + type => string, + long => "application", + help => + "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, + #{short => undefined, + type => boolean, + long => "color", + help => + "Whether to display tests in ANSI-highlighted colors."}, + #{short => 99,type => boolean, + long => "cover", + help => + "Generate cover data. Defaults to false."}, + #{short => undefined, + type => string, + long => "cover_export_name", + help => + "Base name of the coverdata file to write"}, + #{short => 100,type => string, + long => "dir", + help => + "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."}, + #{short => 102,type => string, + long => "file", + help => + "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."}, + #{short => 115,type => string, + long => "suite", + help => + "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, + #{short => 109,type => string, + long => "module", + help => + "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, + #{short => 118,type => boolean, + long => "verbose", + help => + "Verbose output. Defaults to false."}, + #{short => 112,type => boolean, + long => "profile", + help => + "Show the slowest tests. Defaults to false."}, + #{short => undefined, + type => atom,long => "sname", + help => + "Gives a short name to the node"}, + #{short => undefined, + type => atom,long => "name", + help => + "Gives a long name to the node"}, + #{short => 116,type => string, + long => "test", + help => + "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."}, + #{short => 108,type => atom, + long => "test-listener", + help => + "Which test listener to run; legal values are 'ltest-listener', 'eunit_progress', and 'eunit_surefire'."}, + #{short => 116,type => atom, + long => "test-type", + help => + "type of tests to run; legal valuues are unit, system, integration, or all"}, + #{short => 103,type => string, + long => "generator", + help => + "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."}], + name => "ltest", + help => + "Run LFE tests that have been created with the ltest project.", + cmds => []}, + #{args => [],name => "escriptize", + help => + "Escriptize an LFE escript project", + cmds => []}, + #{args => + [#{short => undefined, + type => string,long => "path", + help => + "Provide the path to the file or files to convert (wildcard/globbing is supported)."}], + name => "confabulate", + help => + "Convert the given LFE data file(s) to Erlang file(s).", + cmds => []}, + #{args => [],name => "compile", + help => "Compile LFE project", + cmds => []}, + #{args => [],name => "clean-cache", + help => + "Remove the project's cache directories", + cmds => []}, + #{args => [],name => "clean-build", + help => + "Remove the rebar _build directory", + cmds => []}, + #{args => [],name => "clean-all", + help => "Execute all clean commands", + cmds => []}, + #{args => [],name => "clean", + help => "Clean apps .ebin files", + cmds => []}]}, + #{args => [],name => "plugins", + help => "plugins namespace", + cmds => + [#{args => + [#{short => undefined, + type => string, + long => undefined, + help => "Plugin to upgrade"}, + #{short => 97,type => undefined, + long => "all", + help => + "Upgrade all plugins."}], + name => "upgrade", + help => "Upgrade plugins",cmds => []}, + #{args => [],name => "list", + help => + "List local and global plugins for this project", + cmds => []}]}, + #{args => [],name => "hex", + help => "hex namespace", + cmds => + [#{args => + [#{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}, + #{short => 121,type => boolean, + long => "yes", + help => + "Publishes the package without any confirmation prompts"}, + #{short => undefined, + type => boolean, + long => "replace", + help => + "Allows overwriting an existing package version if it exists. Private packages can always be overwritten, publicpackages can only be overwritten within one hour after they were initially published."}, + #{short => 112,type => string, + long => "package", + help => + "Specifies the package to use with the publish command, currently only utilized in a revert operation"}, + #{short => undefined, + type => string, + long => "revert", + help => + "Revert given version, if the last version is reverted the package is removed"}, + #{short => undefined, + type => boolean, + long => "without-docs", + help => + "Publishing a package without publishing documentation that may be automatically generated"}], + name => "publish", + help => + "Publish a new version of your package and update the package", + cmds => []}, + #{args => + [#{short => undefined, + type => string, + long => undefined, + help => + "Name of the package to retire."}, + #{short => undefined, + type => string, + long => undefined, + help => + "Version of the package to retire."}, + #{short => undefined, + type => string, + long => undefined, + help => + "Reason to retire package."}, + #{short => undefined, + type => string, + long => undefined, + help => + "Clarifying message for retirement"}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "retire", + help => + "Mark a package as deprecated.", + cmds => []}, + #{args => + [#{short => undefined, + type => string, + long => undefined, + help => + "Name of the package to delete."}, + #{short => undefined, + type => string, + long => undefined, + help => + "Version of the package to delete."}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "revert", + help => + "Delete a package from the repository", + cmds => []}, + #{args => + [#{short => undefined, + type => string, + long => undefined, + help => "Search term."}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "search", + help => + "Display packages matching the given search query", + cmds => []}, + #{args => + [#{short => undefined, + type => string, + long => "revert", + help => + "Revert given version."}, + #{short => undefined, + type => boolean, + long => "dry-run", + help => + "Generates docs (if configured) but does not publish the docs. Useful for inspecting docs before publishing."}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "docs", + help => + "Publish documentation for the current project and version", + cmds => []}, + #{args => + [#{short => undefined, + type => string, + long => undefined, + help => "Repo task to run"}, + #{short => undefined, + type => string, + long => undefined, + help => + "Name of a repository"}, + #{short => 107,type => string, + long => "key", + help => + "Authentication key for repository"}], + name => "repo", + help => + "Add, remove or list configured repositories and their auth keys", + cmds => []}, + #{args => + [#{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}, + #{short => 108,type => string, + long => "level", + help => "Ownership level."}, + #{short => 116,type => boolean, + long => "transfer", + help => "Transfer Package"}], + name => "owner", + help => + "Add, remove, transfer or list package owners", + cmds => []}, + #{args => + [#{short => 97,type => boolean, + long => "all",help => "all."}, + #{short => 107,type => string, + long => "key-name", + help => "key-name"}, + #{short => 112,type => list, + long => "permission", + help => "perms."}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "key", + help => + "Remove or list API keys associated with your account", + cmds => []}, + #{args => + [#{short => 105,type => string, + long => "increment", + help => + "Type of semver increment: major, minor or patch"}, + #{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "cut", + help => + "Increment version number and publish package", + cmds => []}, + #{args => + [#{short => 114,type => string, + long => "repo", + help => + "Repository to use for this command."}], + name => "user", + help => "Hex user tasks", + cmds => []}]}, + #{args => [],name => "experimental", + help => "experimental namespace", + cmds => + [#{args => [],name => "vendor", + help => + "Turns dependencies into top-level apps", + cmds => []}]}, + #{args => [],name => "local", + help => "local namespace", + cmds => + [#{args => [],name => "upgrade", + help => + "Download latest rebar3 escript and extract.", + cmds => []}, + #{args => [],name => "install", + help => + "Extract libs from rebar3 escript along with a run script.", + cmds => []}]}, + #{args => [],name => "alias", + help => "List aliases' definitions.", + cmds => []}, + #{args => [],name => "xref", + help => "Run cross reference analysis.", + cmds => []}, + #{args => [],name => "version", + help => + "Print version for rebar and current Erlang.", + cmds => []}, + #{args => + [#{short => 97,type => undefined, + long => "all", + help => "Upgrade all dependencies."}, + #{short => undefined,type => string, + long => undefined, + help => + "List of packages to upgrade."}], + name => "upgrade", + help => "Upgrade dependencies.",cmds => []}, + #{args => [],name => "update", + help => "Update package index.",cmds => []}, + #{args => + [#{short => 97,type => undefined, + long => "all", + help => + "Unlock all dependencies and remove the lock file."}, + #{short => undefined,type => string, + long => undefined, + help => + "List of packages to unlock."}], + name => "unlock", + help => "Unlock dependencies.",cmds => []}, + #{args => + [#{short => undefined,type => boolean, + long => "all", + help => + "If true runs the command against all configured releases"}, + #{short => 110,type => string, + long => "relname", + help => + "Specify the name for the release that will be generated"}, + #{short => 118,type => string, + long => "relvsn", + help => + "Specify the version for the release"}, + #{short => 117,type => string, + long => "upfrom", + help => + "Only valid with relup target, specify the release to upgrade from"}, + #{short => 111,type => string, + long => "output-dir", + help => + "The output directory for the release. This is `./` by default."}, + #{short => 104,type => undefined, + long => "help",help => "Print usage"}, + #{short => 108,type => string, + long => "lib-dir", + help => + "Additional dir that should be searched for OTP Apps"}, + #{short => 100,type => boolean, + long => "dev-mode", + help => + "Symlink the applications and configuration into the release instead of copying"}, + #{short => 105,type => string, + long => "include-erts", + help => + "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, + #{short => 97,type => string, + long => "override", + help => + "Provide an app name and a directory to override in the form :"}, + #{short => 99,type => string, + long => "config", + help => "The path to a config file"}, + #{short => undefined,type => string, + long => "overlay_vars", + help => + "Path to a file of overlay variables"}, + #{short => undefined,type => string, + long => "vm_args", + help => + "Path to a file to use for vm.args"}, + #{short => undefined,type => string, + long => "sys_config", + help => + "Path to a file to use for sys.config"}, + #{short => undefined,type => string, + long => "system_libs", + help => + "Boolean or path to dir of Erlang system libs"}, + #{short => undefined,type => undefined, + long => "version", + help => "Print relx version"}, + #{short => 114,type => string, + long => "root", + help => "The project root directory"}, + #{short => 109,type => string, + long => "relnames", + help => + "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], + name => "tar", + help => + "Tar archive of release built of project.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => "config", + help => + "Path to the config file to use. Defaults to {shell, [{config, File}]} and then the relx sys.config file if not specified."}, + #{short => undefined,type => atom, + long => "name", + help => + "Gives a long name to the node."}, + #{short => undefined,type => atom, + long => "sname", + help => + "Gives a short name to the node."}, + #{short => undefined,type => atom, + long => "setcookie", + help => + "Sets the cookie if the node is distributed."}, + #{short => undefined,type => string, + long => "script", + help => + "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."}, + #{short => undefined,type => string, + long => "apps", + help => + "A list of apps to boot before starting the shell. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."}, + #{short => 114,type => atom, + long => "relname", + help => + "Name of the release to use as a template for the shell session."}, + #{short => 118,type => string, + long => "relvsn", + help => + "Version of the release to use for the shell session."}, + #{short => undefined,type => boolean, + long => "start-clean", + help => + "Cancel any applications in the 'apps' list or release."}, + #{short => undefined,type => string, + long => "env-file", + help => + "Path to file of os environment variables to setup before expanding vars in config files."}, + #{short => undefined,type => string, + long => "user_drv_args", + help => + "For versions of Erlang prior to 26, this option can be used to pass arguments to the user_drv start function for creating custom shells. Starting with Erlang 26, the arguments defined with this option are applied to the shell start_interactive function."}, + #{short => undefined,type => string, + long => "eval", + help => + "Erlang term(s) to execute after the apps have been started, but before the shell is presented to the user."}], + name => "shell", + help => + "Run shell with project apps and deps in path.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => undefined, + help => + "Task to print details for."}], + name => "report", + help => + "Provide a crash report to be sent to the rebar3 issues page.", + cmds => []}, + #{args => + [#{short => undefined,type => boolean, + long => "all", + help => + "If true runs the command against all configured releases"}, + #{short => 110,type => string, + long => "relname", + help => + "Specify the name for the release that will be generated"}, + #{short => 118,type => string, + long => "relvsn", + help => + "Specify the version for the release"}, + #{short => 117,type => string, + long => "upfrom", + help => + "Only valid with relup target, specify the release to upgrade from"}, + #{short => 111,type => string, + long => "output-dir", + help => + "The output directory for the release. This is `./` by default."}, + #{short => 104,type => undefined, + long => "help",help => "Print usage"}, + #{short => 108,type => string, + long => "lib-dir", + help => + "Additional dir that should be searched for OTP Apps"}, + #{short => 100,type => boolean, + long => "dev-mode", + help => + "Symlink the applications and configuration into the release instead of copying"}, + #{short => 105,type => string, + long => "include-erts", + help => + "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, + #{short => 97,type => string, + long => "override", + help => + "Provide an app name and a directory to override in the form :"}, + #{short => 99,type => string, + long => "config", + help => "The path to a config file"}, + #{short => undefined,type => string, + long => "overlay_vars", + help => + "Path to a file of overlay variables"}, + #{short => undefined,type => string, + long => "vm_args", + help => + "Path to a file to use for vm.args"}, + #{short => undefined,type => string, + long => "sys_config", + help => + "Path to a file to use for sys.config"}, + #{short => undefined,type => string, + long => "system_libs", + help => + "Boolean or path to dir of Erlang system libs"}, + #{short => undefined,type => undefined, + long => "version", + help => "Print relx version"}, + #{short => 114,type => string, + long => "root", + help => "The project root directory"}, + #{short => 109,type => string, + long => "relnames", + help => + "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], + name => "relup", + help => "Create relup of releases.", + cmds => []}, + #{args => + [#{short => undefined,type => boolean, + long => "all", + help => + "If true runs the command against all configured releases"}, + #{short => 110,type => string, + long => "relname", + help => + "Specify the name for the release that will be generated"}, + #{short => 118,type => string, + long => "relvsn", + help => + "Specify the version for the release"}, + #{short => 117,type => string, + long => "upfrom", + help => + "Only valid with relup target, specify the release to upgrade from"}, + #{short => 111,type => string, + long => "output-dir", + help => + "The output directory for the release. This is `./` by default."}, + #{short => 104,type => undefined, + long => "help",help => "Print usage"}, + #{short => 108,type => string, + long => "lib-dir", + help => + "Additional dir that should be searched for OTP Apps"}, + #{short => 100,type => boolean, + long => "dev-mode", + help => + "Symlink the applications and configuration into the release instead of copying"}, + #{short => 105,type => string, + long => "include-erts", + help => + "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, + #{short => 97,type => string, + long => "override", + help => + "Provide an app name and a directory to override in the form :"}, + #{short => 99,type => string, + long => "config", + help => "The path to a config file"}, + #{short => undefined,type => string, + long => "overlay_vars", + help => + "Path to a file of overlay variables"}, + #{short => undefined,type => string, + long => "vm_args", + help => + "Path to a file to use for vm.args"}, + #{short => undefined,type => string, + long => "sys_config", + help => + "Path to a file to use for sys.config"}, + #{short => undefined,type => string, + long => "system_libs", + help => + "Boolean or path to dir of Erlang system libs"}, + #{short => undefined,type => undefined, + long => "version", + help => "Print relx version"}, + #{short => 114,type => string, + long => "root", + help => "The project root directory"}, + #{short => 109,type => string, + long => "relnames", + help => + "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], + name => "release", + help => "Build release of project.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => "app", + help => + "Comma separated list of applications to return paths for."}, + #{short => undefined,type => boolean, + long => "base", + help => + "Return the `base' path of the current profile."}, + #{short => undefined,type => boolean, + long => "bin", + help => + "Return the `bin' path of the current profile."}, + #{short => undefined,type => boolean, + long => "ebin", + help => + "Return all `ebin' paths of the current profile's applications."}, + #{short => undefined,type => boolean, + long => "lib", + help => + "Return the `lib' path of the current profile."}, + #{short => undefined,type => boolean, + long => "priv", + help => + "Return the `priv' path of the current profile's applications."}, + #{short => 115,type => string, + long => "separator", + help => + "In case of multiple return paths, the separator character to use to join them."}, + #{short => undefined,type => boolean, + long => "src", + help => + "Return the `src' path of the current profile's applications."}, + #{short => undefined,type => boolean, + long => "rel", + help => + "Return the `rel' path of the current profile."}], + name => "path", + help => + "Print paths to build dirs in current profile.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => undefined, + help => + "Package to fetch information for."}], + name => "pkgs", + help => "List information for a package.", + cmds => []}, + #{args => + [#{short => 102,type => undefined, + long => "force", + help => "overwrite existing files"}], + name => "new", + help => "Create new project from templates.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => undefined, + help => "Task to print help for."}], + name => "help", + help => + "Display a list of tasks or help for a given task or subtask.", + cmds => []}, + #{args => [],name => "get-deps", + help => "Fetch dependencies.",cmds => []}, + #{args => + [#{short => undefined,type => string, + long => "app", + help => + "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, + #{short => undefined,type => string, + long => "application", + help => + "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, + #{short => 99,type => boolean, + long => "cover", + help => + "Generate cover data. Defaults to false."}, + #{short => undefined,type => string, + long => "cover_export_name", + help => + "Base name of the coverdata file to write"}, + #{short => 112,type => boolean, + long => "profile", + help => + "Show the slowest tests. Defaults to false."}, + #{short => 100,type => string, + long => "dir", + help => + "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."}, + #{short => 102,type => string, + long => "file", + help => + "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."}, + #{short => 109,type => string, + long => "module", + help => + "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, + #{short => 116,type => string, + long => "test", + help => + "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."}, + #{short => 115,type => string, + long => "suite", + help => + "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, + #{short => 103,type => string, + long => "generator", + help => + "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."}, + #{short => 118,type => boolean, + long => "verbose", + help => + "Verbose output. Defaults to false."}, + #{short => undefined,type => atom, + long => "name", + help => + "Gives a long name to the node"}, + #{short => undefined,type => atom, + long => "sname", + help => + "Gives a short name to the node"}, + #{short => undefined,type => string, + long => "sys_config", + help => + "List of application config files"}, + #{short => undefined,type => atom, + long => "setcookie", + help => + "Sets the cookie if the node is distributed"}], + name => "eunit",help => "Run EUnit Tests.", + cmds => []}, + #{args => + [#{short => 97,type => string, + long => "main-app", + help => + "Specify the name of the application to build an escript for."}], + name => "escriptize", + help => "Generate escript archive.", + cmds => []}, + #{args => [],name => "edoc", + help => "Generate documentation using edoc.", + cmds => []}, + #{args => + [#{short => 105,type => boolean, + long => "incremental", + help => + "Enable incremental analysis mode. Default: false"}, + #{short => 117,type => boolean, + long => "update-plt", + help => + "Enable updating the PLT. Default: true"}, + #{short => 115,type => boolean, + long => "succ-typings", + help => + "Enable success typing analysis. Default: true"}, + #{short => undefined,type => string, + long => "base-plt-location", + help => + "The location of base PLT file, defaults to $HOME/.cache/rebar3"}, + #{short => undefined,type => string, + long => "plt-location", + help => + "The location of the PLT file, defaults to the profile's base directory"}, + #{short => undefined,type => string, + long => "plt-prefix", + help => + "The prefix to the PLT file, defaults to \"rebar3\""}, + #{short => 97,type => string, + long => "app", + help => + "Perform success typing analysis of a single application"}, + #{short => undefined,type => string, + long => "base-plt-prefix", + help => + "The prefix to the base PLT file, defaults to \"rebar3\""}, + #{short => undefined,type => boolean, + long => "statistics", + help => + "Print information about the progress of execution. Default: false"}], + name => "dialyzer", + help => + "Run the Dialyzer analyzer on the project.", + cmds => []}, + #{args => + [#{short => 118,type => undefined, + long => "verbose", + help => + "Print repo and branch/tag/ref for git and hg deps"}], + name => "tree", + help => "Print dependency tree.",cmds => []}, + #{args => [],name => "deps", + help => "List dependencies",cmds => []}, + #{args => + [#{short => 114,type => boolean, + long => "reset", + help => "Reset all coverdata."}, + #{short => 118,type => boolean, + long => "verbose", + help => "Print coverage analysis."}, + #{short => 109,type => integer, + long => "min_coverage", + help => + "Mandate a coverage percentage required to succeed (0..100)"}], + name => "cover", + help => "Perform coverage analysis.", + cmds => []}, + #{args => + [#{short => 97,type => string, + long => "aliases", + help => + "Comma separated list of OS level aliases on which rebar3 completion will be triggered (e.g. \"rebar\" or \"r3\")."}, + #{short => 102,type => string, + long => "file", + help => + "Completion file name. Relative to \"_build/\"."}, + #{short => 115,type => atom, + long => "shell", + help => + "Shell type, 'bash' or 'zsh'."}], + name => "completion", + help => + "Generate completion file for your shell.", + cmds => []}, + #{args => + [#{short => 100,type => undefined, + long => "deps_only", + help => + "Only compile dependencies, no project apps will be built."}], + name => "compile", + help => + "Compile apps .app.src and .erl files.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => "dir", + help => + "List of additional directories containing test suites"}, + #{short => undefined,type => string, + long => "suite", + help => "List of test suites to run"}, + #{short => undefined,type => string, + long => "group", + help => "List of test groups to run"}, + #{short => undefined,type => string, + long => "case", + help => "List of test cases to run"}, + #{short => undefined,type => string, + long => "label",help => "Test label"}, + #{short => undefined,type => string, + long => "config", + help => "List of config files"}, + #{short => undefined,type => string, + long => "spec", + help => + "List of test specifications"}, + #{short => undefined,type => boolean, + long => "join_specs", + help => + "Merge all test specifications and perform a single test run"}, + #{short => undefined,type => boolean, + long => "allow_user_terms", + help => + "Allow user defined config values in config files"}, + #{short => undefined,type => string, + long => "logdir", + help => "Log folder"}, + #{short => undefined,type => string, + long => "logopts", + help => + "Options for common test logging"}, + #{short => undefined,type => integer, + long => "verbosity", + help => "Verbosity"}, + #{short => 99,type => boolean, + long => "cover", + help => "Generate cover data"}, + #{short => undefined,type => string, + long => "cover_export_name", + help => + "Base name of the coverdata file to write"}, + #{short => undefined,type => integer, + long => "repeat", + help => "How often to repeat tests"}, + #{short => undefined,type => string, + long => "duration", + help => + "Max runtime (format: HHMMSS)"}, + #{short => undefined,type => string, + long => "until", + help => "Run until (format: HHMMSS)"}, + #{short => undefined,type => string, + long => "force_stop", + help => + "Force stop on test timeout (true | false | skip_rest)"}, + #{short => undefined,type => boolean, + long => "basic_html", + help => "Show basic HTML"}, + #{short => undefined,type => string, + long => "stylesheet", + help => + "CSS stylesheet to apply to html output"}, + #{short => undefined,type => string, + long => "decrypt_key", + help => + "Path to key for decrypting config"}, + #{short => undefined,type => string, + long => "decrypt_file", + help => + "Path to file containing key for decrypting config"}, + #{short => undefined,type => boolean, + long => "abort_if_missing_suites", + help => + "Abort if suites are missing"}, + #{short => undefined,type => integer, + long => "multiply_timetraps", + help => []}, + #{short => undefined,type => boolean, + long => "scale_timetraps", + help => "Scale timetraps"}, + #{short => undefined,type => string, + long => "create_priv_dir", + help => + "Create priv dir (auto_per_run | auto_per_tc | manual_per_tc)"}, + #{short => undefined,type => string, + long => "include", + help => + "Directories containing additional include files"}, + #{short => undefined,type => string, + long => "readable", + help => + "Shows test case names and only displays logs to shell on failures (true | compact | false)"}, + #{short => 118,type => boolean, + long => "verbose", + help => "Verbose output"}, + #{short => undefined,type => atom, + long => "name", + help => + "Gives a long name to the node"}, + #{short => undefined,type => atom, + long => "sname", + help => + "Gives a short name to the node"}, + #{short => undefined,type => atom, + long => "setcookie", + help => + "Sets the cookie if the node is distributed"}, + #{short => undefined,type => string, + long => "sys_config", + help => + "List of application config files"}, + #{short => undefined,type => boolean, + long => "compile_only", + help => + "Compile modules in the project with the test configuration but do not run the tests"}, + #{short => undefined,type => boolean, + long => "retry", + help => + "Experimental feature. If any specification for previously failing test is found, runs them."}, + #{short => undefined,type => boolean, + long => "fail_fast", + help => + "Experimental feature. If any test fails, the run is aborted. Since common test does not support this natively, we abort the rebar3 run on a failure. This May break CT's disk logging and other rebar3 features."}], + name => "ct",help => "Run Common Tests.", + cmds => []}, + #{args => + [#{short => 97,type => undefined, + long => "all", + help => + "Clean all apps include deps"}, + #{short => undefined,type => string, + long => "apps", + help => + "Clean a specific list of apps or dependencies"}, + #{short => 112,type => string, + long => "profile", + help => + "Clean under profile. Equivalent to `rebar3 as clean`"}], + name => "clean", + help => + "Remove compiled beam files from apps.", + cmds => []}, + #{args => + [#{short => undefined,type => string, + long => undefined, + help => "Profiles to run as."}], + name => "as", + help => + "Higher order provider for running multiple tasks in a sequence as a certain profiles.", + cmds => + [#{args => [],name => "test",help => [], + cmds => []}, + #{args => [],name => "systest", + help => [],cmds => []}, + #{args => [],name => "dialyzer", + help => [],cmds => []}, + #{args => [],name => "prod",help => [], + cmds => []}]}, + #{args => [],name => "cmd", + help => + "A rebar3 plugin to run custom shell commands 'cmd '.", + cmds => []}, + #{args => [],name => "lint", + help => "A rebar plugin for elvis", + cmds => []}]}, + [],1], + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, + {line,23}]}, + {rebar_completion_bash,'-main/2-lc$^2/1-3-',1, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, + {line,83}]}, + {rebar_completion_bash,main,2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, + {line,83}]}, + {rebar_completion_bash,generate,2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, + {line,15}]}, + {rebar_prv_completion,do,1, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_prv_completion.erl"}, + {line,68}]}, + {rebar_core,do,2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_core.erl"}, + {line,155}]}, + {rebar3,run_aux,2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar3.erl"}, + {line,205}]}, + {rebar3,main,1, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar3.erl"}, + {line,66}]}] + From 6dd0382ce818e1ccfa8db72675dc67907d6f6e99 Mon Sep 17 00:00:00 2001 From: Marko Mindek Date: Mon, 29 Jan 2024 05:57:12 +0100 Subject: [PATCH 4/6] ct assertions and skip, backward comp, cmpl fix --- apps/rebar/rebar3.crashdump | 1186 ++++++++++++++++++++ apps/rebar/src/rebar_completion_bash.erl | 2 +- apps/rebar/src/rebar_prv_completion.erl | 18 +- apps/rebar/test/rebar_completion_SUITE.erl | 15 +- rebar3.crashdump | 1149 ------------------- 5 files changed, 1217 insertions(+), 1153 deletions(-) create mode 100644 apps/rebar/rebar3.crashdump delete mode 100644 rebar3.crashdump diff --git a/apps/rebar/rebar3.crashdump b/apps/rebar/rebar3.crashdump new file mode 100644 index 000000000..56bceecfb --- /dev/null +++ b/apps/rebar/rebar3.crashdump @@ -0,0 +1,1186 @@ +error: undef +[{rebar3_lfe_prv_compile,init, + [{state_t,"/home/mmin/oss/rebar3/apps/rebar", + {dict,6,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}], + [{plugins,default},{rebar3_lfe,"0.4.8"}], + [{project_plugins,default}]], + [[deps_dir,112,108,117,103,105,110,115]], + [[plugins,{rebar3_lfe,"0.4.8"}],[overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,1,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[],[],[], + [[all_plugin_deps,"/home/mmin/.cache/rebar3/plugins/erlang_color/ebin", + "/home/mmin/.cache/rebar3/plugins/lfe/ebin", + "/home/mmin/.cache/rebar3/plugins/ltest/ebin", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin"]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,4,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}], + [{plugins,default},{rebar3_lfe,"0.4.8"}], + [{project_plugins,default}]], + [], + [[plugins,{rebar3_lfe,"0.4.8"}]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + undefined,[], + [global], + default,[], + {[],[]}, + undefined,[],[], + [{app_info_t,<<"erlang_color">>, + "/home/mmin/.cache/rebar3/plugins/erlang_color/src/color.app.src", + undefined, + "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin/color.app","1.0.0", + "1.0.0",<<"ltest">>, + [{description,"ANSI colors for your Erlang"}, + {vsn,"1.0.0"}, + {modules,[color]}, + {registered,[]}, + {applications,[kernel,stdlib]}, + {env,[]}, + {pkg_name,erlang_color}, + {maintainers,["Julian Duque","Duncan McGreggor"]}, + {licenses,["MIT"]}, + {links, + [{"GitHub","https://github.com/julianduque/erlang-color"}, + {"Hex","https://hex.pm/packages/erlang_color"}]}], + [kernel,stdlib], + [],[],[], + [default,prod], + {dict,5,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info,{i,"include"}],[overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,6,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info,{i,"include"}],[overrides]], + [],[],[],[],[], + [[{plugins,global}]], + [],[],[],[],[],[]}}}, + 2,"/home/mmin/.cache/rebar3/plugins/erlang_color", + "/home/mmin/.cache/rebar3/plugins/erlang_color", + "/home/mmin/.cache/rebar3/plugins/erlang_color",undefined, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined,api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, + repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"lfe">>, + "/home/mmin/.cache/rebar3/plugins/lfe/src/lfe.app.src",undefined, + "/home/mmin/.cache/rebar3/plugins/lfe/ebin/lfe.app","2.1.2","2.1.2", + <<"rebar3_lfe">>, + [{description,"Lisp Flavored Erlang (LFE)"}, + {vsn,"2.1.2"}, + {modules, + [cl,clj,lfe,lfe_abstract_code,lfe_bits,lfe_codegen,lfe_codelift, + lfe_comp,lfe_docs,lfe_edlin_expand,lfe_env,lfe_eval,lfe_eval_bits, + lfe_gen,lfe_init,lfe_internal,lfe_io,lfe_io_format,lfe_io_pretty, + lfe_io_write,lfe_lib,lfe_lint,lfe_macro,lfe_macro_export, + lfe_macro_include,lfe_macro_record,lfe_macro_struct,lfe_ms,lfe_parse, + lfe_qlc,lfe_scan,lfe_shell,lfe_shell_docs,lfe_struct,lfe_translate, + lfe_types,lfescript,scm]}, + {registered,[]}, + {applications,[kernel,stdlib,compiler]}, + {maintainers,["Robert Virding"]}, + {licenses,["Apache"]}, + {links, + [{"Github","https://github.com/lfe/lfe"}, + {"Main site","https://lfe.io/"}, + {"Documentation","https://lfe.io/use/#reference"}]}, + {files, + ["README.md","LICENSE","src","c_src","include","bin","rebar.*", + "*akefile","*.escript"]}], + [kernel,stdlib,compiler], + [],[],[], + [default,prod], + {dict,7,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info, + {d,'ERLANG_VERSION',"24.3.4.14"}, + {d,'HAS_MAPS',true}, + {d,'HAS_FULL_KEYS',true}, + {d,'NEW_REC_CORE',true}, + {d,'NEW_RAND',true}, + {d,'NEW_BOOL_GUARD',true}, + {d,'HAS_FLOOR',true}, + {d,'HAS_CEIL',true}, + {d,'NEW_STACKTRACE',true}, + {d,'EEP48',true}], + [profiles, + {test, + [{deps,[proper]}, + {plugins, + [{rebar3_proper, + {git,"https://github.com/ferd/rebar3_proper", + {tag,"0.12.1"}}}]}, + {src_dirs,["src","test"]}]}, + {dialyzer,[]}], + [pre_hooks, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,8,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info, + {d,'ERLANG_VERSION',"24.3.4.14"}, + {d,'HAS_MAPS',true}, + {d,'HAS_FULL_KEYS',true}, + {d,'NEW_REC_CORE',true}, + {d,'NEW_RAND',true}, + {d,'NEW_BOOL_GUARD',true}, + {d,'HAS_FLOOR',true}, + {d,'HAS_CEIL',true}, + {d,'NEW_STACKTRACE',true}, + {d,'EEP48',true}], + [profiles, + {test, + [{deps,[proper]}, + {plugins, + [{rebar3_proper, + {git,"https://github.com/ferd/rebar3_proper", + {tag,"0.12.1"}}}]}, + {src_dirs,["src","test"]}]}, + {dialyzer,[]}], + [pre_hooks, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], + [overrides]], + [],[],[],[],[], + [[{plugins,global}]], + [],[],[],[],[],[]}}}, + 1,"/home/mmin/.cache/rebar3/plugins/lfe", + "/home/mmin/.cache/rebar3/plugins/lfe", + "/home/mmin/.cache/rebar3/plugins/lfe",undefined, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined,api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, + repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"ltest">>, + "/home/mmin/.cache/rebar3/plugins/ltest/src/ltest.app.src",undefined, + "/home/mmin/.cache/rebar3/plugins/ltest/ebin/ltest.app","0.13.5", + "0.13.5",<<"rebar3_lfe">>, + [{description,"A Testing Framework for LFE"}, + {vsn,"0.13.5"}, + {modules, + ['ltest-color','ltest-const','ltest-formatter','ltest-integration', + 'ltest-listener','ltest-runner','ltest-system','ltest-unit', + 'ltest-util',ltest]}, + {registered,[]}, + {applications,[kernel,stdlib]}, + {included_applications,[]}, + {env,[]}, + {pkg_name,ltest}, + {maintainers,["Duncan McGreggor"]}, + {licenses,["BSD-3"]}, + {links, + [{"GitHub","https://github.com/lfex/ltest"}, + {"Hex","https://hex.pm/packages/ltest"}]}, + {exclude_paths,["priv"]}], + [kernel,stdlib], + [],[], + [<<"erlang_color">>,<<"lfe">>], + [default,prod], + {dict,15,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 0}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}], + [{deps,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.2.6"}]], + [[dialyzer,{warnings,[unknown]}]], + [[erl_first_files,"src/ltest-util.lfe"], + [eunit_opts,verbose], + [eunit_compile_opts,{src_dirs,["src","test"]}], + [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], + [plugins,{rebar_cmd,"0.2.6"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls,deprecated_functions], + [pre_hooks, + {app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], + [profiles, + {test, + [{eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}, + {pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, + {repl, + [{pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, + {plugins, + [{rebar3_lfe, + {git,"https://github.com/lfe-rebar3/rebar3_lfe.git", + {branch,"release/0.3.x"}}}]}]}], + [commands, + {ltest,"make check-runner-ltest"}, + {'deps-dir',"echo $REBAR_DEPS_DIR"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,{cmd,"ltest"}]}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,16,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 0}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}], + [{deps,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.2.6"}]], + [[dialyzer,{warnings,[unknown]}]], + [[erl_first_files,"src/ltest-util.lfe"], + [eunit_opts,verbose], + [eunit_compile_opts,{src_dirs,["src","test"]}], + [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], + [plugins,{rebar_cmd,"0.2.6"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls,deprecated_functions], + [pre_hooks, + {app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], + [profiles, + {test, + [{eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}, + {pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, + {repl, + [{pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, + {plugins, + [{rebar3_lfe, + {git,"https://github.com/lfe-rebar3/rebar3_lfe.git", + {branch,"release/0.3.x"}}}]}]}], + [commands, + {ltest,"make check-runner-ltest"}, + {'deps-dir',"echo $REBAR_DEPS_DIR"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,{cmd,"ltest"}]}], + [overrides]], + [],[],[],[],[], + [[{plugins,global},{rebar_cmd,"0.2.6"}]], + [],[],[],[],[],[]}}}, + 1,"/home/mmin/.cache/rebar3/plugins/ltest", + "/home/mmin/.cache/rebar3/plugins/ltest", + "/home/mmin/.cache/rebar3/plugins/ltest",undefined, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined,api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, + repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"rebar3_lfe">>, + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/src/rebar3_lfe.app.src", + undefined, + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin/rebar3_lfe.app", + "0.4.8","0.4.8",root, + [{description, + "A comprehensive LFE rebar3 plugin for all your LFE tooling needs"}, + {vsn,"0.4.8"}, + {registered,[]}, + {applications,[kernel,stdlib,lfe]}, + {env,[]}, + {modules, + [rebar3_lfe,rebar3_lfe_clean,rebar3_lfe_package,rebar3_lfe_prv_clean, + rebar3_lfe_prv_clean_all,rebar3_lfe_prv_clean_build, + rebar3_lfe_prv_clean_cache,rebar3_lfe_prv_compile, + rebar3_lfe_prv_confabulate,rebar3_lfe_prv_escriptize, + rebar3_lfe_prv_ltest,rebar3_lfe_prv_release,rebar3_lfe_prv_repl, + rebar3_lfe_prv_run,rebar3_lfe_prv_run_escript, + rebar3_lfe_prv_run_release,rebar3_lfe_prv_versions,rebar3_lfe_repl, + rebar3_lfe_utils,rebar3_lfe_version]}, + {pkg_name,rebar3_lfe}, + {licenses,["Apache 2.0"]}, + {links, + [{"GitHub","https://github.com/lfe/rebar3"}, + {"Hex","https://hex.pm/packages/rebar3_lfe"}, + {"LFE","https://github.com/lfe/lfe"}]}, + {exclude_files,["priv/testing/*"]}], + [kernel,stdlib,lfe], + [],[], + [<<"lfe">>,<<"ltest">>], + [default,prod], + {dict,11,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 1}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}, + {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, + 0}], + [{deps,default}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.4.0"}]], + [], + [[erl_opts,debug_info], + [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], + [plugins,{rebar_cmd,"0.4.0"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls,deprecated_functions], + [profiles, + {test, + [{deps,[{proper,"1.3.0"}]}, + {plugins,[{rebar3_proper,"0.12.1"}]}, + {eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}]}], + [commands, + {clean_all,"rm -rf _build rebar3.lock"}, + {test_all,"rebar3 as test check"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,coverage]}, + {clean_all,[{cmd,"clean_all"}]}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,12,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 1}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}, + {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, + 0}], + [{deps,default}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.4.0"}]], + [], + [[erl_opts,debug_info], + [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], + [plugins,{rebar_cmd,"0.4.0"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls,deprecated_functions], + [profiles, + {test, + [{deps,[{proper,"1.3.0"}]}, + {plugins,[{rebar3_proper,"0.12.1"}]}, + {eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}]}], + [commands, + {clean_all,"rm -rf _build rebar3.lock"}, + {test_all,"rebar3 as test check"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,coverage]}, + {clean_all,[{cmd,"clean_all"}]}], + [overrides]], + [],[],[],[],[], + [[{plugins,global},{rebar_cmd,"0.4.0"}]], + [],[],[],[],[],[]}}}, + 0,"/home/mmin/.cache/rebar3/plugins/rebar3_lfe", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe",undefined, + {pkg,<<"rebar3_lfe">>,<<"0.4.8">>, + <<"70AD90549580C5384ABFF1677B8FE874C9EEFD15FF93BF875C86D5115CBDBEBD">>, + <<"09F3E90AA6A4A7B706E64C314AB670F5C37AC77EBDC119CFB6398AA9F165EE1B">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined,api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, + repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}], + [], + [rebar_compiler_xrl,rebar_compiler_yrl,rebar_compiler_mib, + rebar_compiler_erl], + [], + [{resource,hg,rebar_hg_resource,#{},rebar_resource_v2}, + {resource,pkg,rebar_pkg_resource, + #{base_config => + #{http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>}, + repos => + [#{api_key => undefined,api_organization => undefined, + api_repository => undefined,api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}]}, + rebar_resource_v2}, + {resource,git_subdir,rebar_git_subdir_resource,#{},rebar_resource_v2}, + {resource,git,rebar_git_resource,#{},rebar_resource_v2}], + [{provider,'clean-cache',rebar3_lfe_prv_clean_cache, + {[],[]}, + true, + [{default,clean}], + [10,"Remove the project's cache directories",10,10,84,104,105,115,32, + 100,101,108,101,116,101,115,32,116,104,101,32,112,114,111,106,101,99, + 116,39,115,32,101,110,116,114,105,101,115,32,105,110,32,116,104,101,32, + 108,111,99,97,108,32,97,110,100,32,103,108,111,98,97,108,32,112,108, + 117,103,105,110,115,10,97,110,100,47,111,114,32,108,105,98,32,100,105, + 114,101,99,116,111,114,105,101,115,46,32,73,116,32,97,108,115,111,32, + 100,101,108,101,116,101,115,32,116,104,101,32,114,101,98,97,114,51,95, + 108,102,101,32,112,108,117,103,105,110,10,99,97,99,104,101,115,46,10], + "Remove the project's cache directories","rebar3 lfe clean-cache",[], + [default], + lfe}, + {provider,'clean-build',rebar3_lfe_prv_clean_build, + {[],[]}, + true, + [{default,clean}], + [10,"Remove the rebar _build directory",10,10,84,104,105,115,32,101,110, + 116,105,114,101,108,121,32,100,101,108,101,116,101,115,32,116,104,101, + 32,46,47,95,98,117,105,108,100,32,100,105,114,101,99,116,111,114,121, + 32,99,114,101,97,116,101,100,32,98,121,32,114,101,98,97,114,51,46,10], + "Remove the rebar _build directory","rebar3 lfe clean-build",[], + [default], + lfe}, + {provider,'clean-all',rebar3_lfe_prv_clean_all, + {[],[]}, + true, + [{default,clean}], + [10,"Execute all clean commands",10,10,84,104,105,115,32,100,101,108, + 101,116,101,115,32,116,104,101,32,95,98,117,105,108,100,32,100,105,114, + 101,99,116,111,114,121,44,32,97,108,108,32,112,114,111,106,101,99,116, + 32,97,110,100,32,112,108,117,103,105,110,32,99,97,99,104,101,115,44,10, + 97,115,32,119,101,108,108,32,97,115,32,116,104,101,32,114,101,98,97, + 114,46,108,111,99,107,32,97,110,100,32,97,110,121,32,99,114,97,115,104, + 100,117,109,112,32,102,105,108,101,115,46,10], + "Execute all clean commands","rebar3 lfe clean-all",[], + [default], + lfe}, + {provider,clean,rebar3_lfe_prv_clean, + {[],[]}, + true, + [{default,clean}], + [10,"Clean apps .ebin files",10,10,84,104,105,115,32,100,101,108,101, + 116,101,115,32,116,104,101,32,99,111,109,112,105,108,101,100,32,46,101, + 98,105,110,32,102,105,108,101,115,32,102,111,114,32,97,32,112,114,111, + 106,101,99,116,39,115,32,97,112,112,115,46,10], + "Clean apps .ebin files","rebar3 lfe clean",[], + [default], + lfe}], + false}], + []}, + {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, + {rebar_state,'-create_logic_providers/2-fun-0-',2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_state.erl"},{line,507}]}, + {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, + {rebar_state,create_logic_providers,2, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_state.erl"},{line,506}]}, + {rebar_plugins,'-handle_plugins/4-fun-0-',5, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_plugins.erl"}, + {line,103}]}, + {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, + {rebar_plugins,handle_plugins,4, + [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_plugins.erl"}, + {line,101}]}] + +{state_t,"/home/mmin/oss/rebar3/apps/rebar", + {dict,6,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}], + [{plugins,default},{rebar3_lfe,"0.4.8"}], + [{project_plugins,default}]], + [[deps_dir,112,108,117,103,105,110,115]], + [[plugins,{rebar3_lfe,"0.4.8"}],[overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,1,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[],[],[], + [[all_plugin_deps, + "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin", + "/home/mmin/.cache/rebar3/plugins/lfe/ebin", + "/home/mmin/.cache/rebar3/plugins/ltest/ebin", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin"]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,4,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}], + [{plugins,default},{rebar3_lfe,"0.4.8"}], + [{project_plugins,default}]], + [], + [[plugins,{rebar3_lfe,"0.4.8"}]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + undefined,[], + [global], + default,[], + {[],[]}, + undefined,[],[], + [{app_info_t,<<"erlang_color">>, + "/home/mmin/.cache/rebar3/plugins/erlang_color/src/color.app.src", + undefined, + "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin/color.app", + "1.0.0","1.0.0",<<"ltest">>, + [{description,"ANSI colors for your Erlang"}, + {vsn,"1.0.0"}, + {modules,[color]}, + {registered,[]}, + {applications,[kernel,stdlib]}, + {env,[]}, + {pkg_name,erlang_color}, + {maintainers,["Julian Duque","Duncan McGreggor"]}, + {licenses,["MIT"]}, + {links, + [{"GitHub","https://github.com/julianduque/erlang-color"}, + {"Hex","https://hex.pm/packages/erlang_color"}]}], + [kernel,stdlib], + [],[],[], + [default,prod], + {dict,5,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info,{i,"include"}],[overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,6,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info,{i,"include"}],[overrides]], + [],[],[],[],[], + [[{plugins,global}]], + [],[],[],[],[],[]}}}, + 2,"/home/mmin/.cache/rebar3/plugins/erlang_color", + "/home/mmin/.cache/rebar3/plugins/erlang_color", + "/home/mmin/.cache/rebar3/plugins/erlang_color",undefined, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined, + api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"lfe">>, + "/home/mmin/.cache/rebar3/plugins/lfe/src/lfe.app.src",undefined, + "/home/mmin/.cache/rebar3/plugins/lfe/ebin/lfe.app","2.1.2","2.1.2", + <<"rebar3_lfe">>, + [{description,"Lisp Flavored Erlang (LFE)"}, + {vsn,"2.1.2"}, + {modules, + [cl,clj,lfe,lfe_abstract_code,lfe_bits,lfe_codegen,lfe_codelift, + lfe_comp,lfe_docs,lfe_edlin_expand,lfe_env,lfe_eval, + lfe_eval_bits,lfe_gen,lfe_init,lfe_internal,lfe_io, + lfe_io_format,lfe_io_pretty,lfe_io_write,lfe_lib,lfe_lint, + lfe_macro,lfe_macro_export,lfe_macro_include,lfe_macro_record, + lfe_macro_struct,lfe_ms,lfe_parse,lfe_qlc,lfe_scan,lfe_shell, + lfe_shell_docs,lfe_struct,lfe_translate,lfe_types,lfescript, + scm]}, + {registered,[]}, + {applications,[kernel,stdlib,compiler]}, + {maintainers,["Robert Virding"]}, + {licenses,["Apache"]}, + {links, + [{"Github","https://github.com/lfe/lfe"}, + {"Main site","https://lfe.io/"}, + {"Documentation","https://lfe.io/use/#reference"}]}, + {files, + ["README.md","LICENSE","src","c_src","include","bin","rebar.*", + "*akefile","*.escript"]}], + [kernel,stdlib,compiler], + [],[],[], + [default,prod], + {dict,7,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info, + {d,'ERLANG_VERSION',"24.3.4.14"}, + {d,'HAS_MAPS',true}, + {d,'HAS_FULL_KEYS',true}, + {d,'NEW_REC_CORE',true}, + {d,'NEW_RAND',true}, + {d,'NEW_BOOL_GUARD',true}, + {d,'HAS_FLOOR',true}, + {d,'HAS_CEIL',true}, + {d,'NEW_STACKTRACE',true}, + {d,'EEP48',true}], + [profiles, + {test, + [{deps,[proper]}, + {plugins, + [{rebar3_proper, + {git,"https://github.com/ferd/rebar3_proper", + {tag,"0.12.1"}}}]}, + {src_dirs,["src","test"]}]}, + {dialyzer,[]}], + [pre_hooks, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,8,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{deps,default}],[{plugins,default}],[{locks,default}]], + [], + [[erl_opts,debug_info, + {d,'ERLANG_VERSION',"24.3.4.14"}, + {d,'HAS_MAPS',true}, + {d,'HAS_FULL_KEYS',true}, + {d,'NEW_REC_CORE',true}, + {d,'NEW_RAND',true}, + {d,'NEW_BOOL_GUARD',true}, + {d,'HAS_FLOOR',true}, + {d,'HAS_CEIL',true}, + {d,'NEW_STACKTRACE',true}, + {d,'EEP48',true}], + [profiles, + {test, + [{deps,[proper]}, + {plugins, + [{rebar3_proper, + {git,"https://github.com/ferd/rebar3_proper", + {tag,"0.12.1"}}}]}, + {src_dirs,["src","test"]}]}, + {dialyzer,[]}], + [pre_hooks, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, + "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], + [overrides]], + [],[],[],[],[], + [[{plugins,global}]], + [],[],[],[],[],[]}}}, + 1,"/home/mmin/.cache/rebar3/plugins/lfe", + "/home/mmin/.cache/rebar3/plugins/lfe", + "/home/mmin/.cache/rebar3/plugins/lfe",undefined, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined, + api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"ltest">>, + "/home/mmin/.cache/rebar3/plugins/ltest/src/ltest.app.src",undefined, + "/home/mmin/.cache/rebar3/plugins/ltest/ebin/ltest.app","0.13.5", + "0.13.5",<<"rebar3_lfe">>, + [{description,"A Testing Framework for LFE"}, + {vsn,"0.13.5"}, + {modules, + ['ltest-color','ltest-const','ltest-formatter', + 'ltest-integration','ltest-listener','ltest-runner', + 'ltest-system','ltest-unit','ltest-util',ltest]}, + {registered,[]}, + {applications,[kernel,stdlib]}, + {included_applications,[]}, + {env,[]}, + {pkg_name,ltest}, + {maintainers,["Duncan McGreggor"]}, + {licenses,["BSD-3"]}, + {links, + [{"GitHub","https://github.com/lfex/ltest"}, + {"Hex","https://hex.pm/packages/ltest"}]}, + {exclude_paths,["priv"]}], + [kernel,stdlib], + [],[], + [<<"erlang_color">>,<<"lfe">>], + [default,prod], + {dict,15,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 0}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}], + [{deps,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.2.6"}]], + [[dialyzer,{warnings,[unknown]}]], + [[erl_first_files,"src/ltest-util.lfe"], + [eunit_opts,verbose], + [eunit_compile_opts,{src_dirs,["src","test"]}], + [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], + [plugins,{rebar_cmd,"0.2.6"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls, + deprecated_functions], + [pre_hooks, + {app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], + [profiles, + {test, + [{eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}, + {pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, + {repl, + [{pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, + {plugins, + [{rebar3_lfe, + {git, + "https://github.com/lfe-rebar3/rebar3_lfe.git", + {branch,"release/0.3.x"}}}]}]}], + [commands, + {ltest,"make check-runner-ltest"}, + {'deps-dir',"echo $REBAR_DEPS_DIR"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,{cmd,"ltest"}]}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,16,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 0}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}], + [{deps,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.2.6"}]], + [[dialyzer,{warnings,[unknown]}]], + [[erl_first_files,"src/ltest-util.lfe"], + [eunit_opts,verbose], + [eunit_compile_opts,{src_dirs,["src","test"]}], + [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], + [plugins,{rebar_cmd,"0.2.6"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls, + deprecated_functions], + [pre_hooks, + {app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], + [profiles, + {test, + [{eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}, + {pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, + {repl, + [{pre_hooks, + [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, + {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", + app_compile, + "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, + {plugins, + [{rebar3_lfe, + {git, + "https://github.com/lfe-rebar3/rebar3_lfe.git", + {branch,"release/0.3.x"}}}]}]}], + [commands, + {ltest,"make check-runner-ltest"}, + {'deps-dir',"echo $REBAR_DEPS_DIR"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,{cmd,"ltest"}]}], + [overrides]], + [],[],[],[],[], + [[{plugins,global},{rebar_cmd,"0.2.6"}]], + [],[],[],[],[],[]}}}, + 1,"/home/mmin/.cache/rebar3/plugins/ltest", + "/home/mmin/.cache/rebar3/plugins/ltest", + "/home/mmin/.cache/rebar3/plugins/ltest",undefined, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined, + api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}, + {app_info_t,<<"rebar3_lfe">>, + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/src/rebar3_lfe.app.src", + undefined, + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin/rebar3_lfe.app", + "0.4.8","0.4.8",root, + [{description, + "A comprehensive LFE rebar3 plugin for all your LFE tooling needs"}, + {vsn,"0.4.8"}, + {registered,[]}, + {applications,[kernel,stdlib,lfe]}, + {env,[]}, + {modules, + [rebar3_lfe,rebar3_lfe_clean,rebar3_lfe_package, + rebar3_lfe_prv_clean,rebar3_lfe_prv_clean_all, + rebar3_lfe_prv_clean_build,rebar3_lfe_prv_clean_cache, + rebar3_lfe_prv_compile,rebar3_lfe_prv_confabulate, + rebar3_lfe_prv_escriptize,rebar3_lfe_prv_ltest, + rebar3_lfe_prv_release,rebar3_lfe_prv_repl,rebar3_lfe_prv_run, + rebar3_lfe_prv_run_escript,rebar3_lfe_prv_run_release, + rebar3_lfe_prv_versions,rebar3_lfe_repl,rebar3_lfe_utils, + rebar3_lfe_version]}, + {pkg_name,rebar3_lfe}, + {licenses,["Apache 2.0"]}, + {links, + [{"GitHub","https://github.com/lfe/rebar3"}, + {"Hex","https://hex.pm/packages/rebar3_lfe"}, + {"LFE","https://github.com/lfe/lfe"}]}, + {exclude_files,["priv/testing/*"]}], + [kernel,stdlib,lfe], + [],[], + [<<"lfe">>,<<"ltest">>], + [default,prod], + {dict,11,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 1}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, + 0}], + [{deps,default}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.4.0"}]], + [], + [[erl_opts,debug_info], + [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], + [plugins,{rebar_cmd,"0.4.0"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls, + deprecated_functions], + [profiles, + {test, + [{deps,[{proper,"1.3.0"}]}, + {plugins,[{rebar3_proper,"0.12.1"}]}, + {eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}]}], + [commands, + {clean_all,"rm -rf _build rebar3.lock"}, + {test_all,"rebar3 as test check"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,coverage]}, + {clean_all,[{cmd,"clean_all"}]}], + [overrides]], + [],[],[],[],[],[],[],[],[],[],[],[]}}}, + {dict,12,16,16,8,80,48, + {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, + {{[], + [[{locks,default}, + {<<"erlang_color">>, + {pkg,<<"erlang_color">>,<<"1.0.0">>, + <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, + <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, + 1}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"lfe">>, + {pkg,<<"lfe">>,<<"2.1.2">>, + <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, + <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, + 0}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>, + <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, + <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, + 0}], + [{deps,default}, + {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, + {<<"ltest">>, + {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], + [{plugins,default},{rebar_cmd,"0.4.0"}]], + [], + [[erl_opts,debug_info], + [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], + [plugins,{rebar_cmd,"0.4.0"}], + [xref_checks,undefined_function_calls,undefined_functions, + locals_not_used,deprecated_function_calls, + deprecated_functions], + [profiles, + {test, + [{deps,[{proper,"1.3.0"}]}, + {plugins,[{rebar3_proper,"0.12.1"}]}, + {eunit_opts,[verbose]}, + {erl_opts,[{src_dirs,["src","test"]}]}]}], + [commands, + {clean_all,"rm -rf _build rebar3.lock"}, + {test_all,"rebar3 as test check"}], + [alias, + {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, + {check,[compile,eunit,coverage]}, + {clean_all,[{cmd,"clean_all"}]}], + [overrides]], + [],[],[],[],[], + [[{plugins,global},{rebar_cmd,"0.4.0"}]], + [],[],[],[],[],[]}}}, + 0,"/home/mmin/.cache/rebar3/plugins/rebar3_lfe", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe", + "/home/mmin/.cache/rebar3/plugins/rebar3_lfe",undefined, + {pkg,<<"rebar3_lfe">>,<<"0.4.8">>, + <<"70AD90549580C5384ABFF1677B8FE874C9EEFD15FF93BF875C86D5115CBDBEBD">>, + <<"09F3E90AA6A4A7B706E64C314AB670F5C37AC77EBDC119CFB6398AA9F165EE1B">>, + #{api_key => undefined,api_organization => undefined, + api_repository => undefined, + api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}}, + false,false,true,undefined,true}], + [], + [rebar_compiler_xrl,rebar_compiler_yrl,rebar_compiler_mib, + rebar_compiler_erl], + [], + [{resource,hg,rebar_hg_resource,#{},rebar_resource_v2}, + {resource,pkg,rebar_pkg_resource, + #{base_config => + #{http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>}, + repos => + [#{api_key => undefined,api_organization => undefined, + api_repository => undefined, + api_url => <<"https://hex.pm/api">>, + http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, + http_etag => undefined,http_headers => #{}, + http_user_agent_fragment => + <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, + name => <<"hexpm">>,repo_key => undefined, + repo_name => <<"hexpm">>,repo_organization => undefined, + repo_public_key => + <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, + repo_url => <<"https://repo.hex.pm">>,repo_verify => true, + repo_verify_origin => true,tarball_max_size => 8388608, + tarball_max_uncompressed_size => 67108864}]}, + rebar_resource_v2}, + {resource,git_subdir,rebar_git_subdir_resource,#{},rebar_resource_v2}, + {resource,git,rebar_git_resource,#{},rebar_resource_v2}], + [],false} \ No newline at end of file diff --git a/apps/rebar/src/rebar_completion_bash.erl b/apps/rebar/src/rebar_completion_bash.erl index 8ffad0849..3c7abe128 100644 --- a/apps/rebar/src/rebar_completion_bash.erl +++ b/apps/rebar/src/rebar_completion_bash.erl @@ -60,7 +60,7 @@ main(Commands, #{shell:=bash, aliases:=Aliases}) -> ["_rebar3_ref_idx() {\n", " startc=$1\n", " # is at least one of the two previous words a flag?\n", - " prev=${COMP_CWORD}-${startc}+1\n", + " prev=${COMP_CWORD}-${startc}+",?str(MaxDepth-1),"\n", " if [[ ${COMP_WORDS[${prev}]} == -* || ${COMP_WORDS[${prev}-1]} == -* ]] ; then\n", " startc=$((startc+1))\n", " _rebar3_ref_idx $startc\n", diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl index 6f7107112..9e8da4c62 100644 --- a/apps/rebar/src/rebar_prv_completion.erl +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -55,7 +55,7 @@ do(State) -> Providers0 = rebar_state:providers(State), BareProviders = lists:filter(fun(P) -> provider_get(P, bare) end, Providers0), - ByNamespace = maps:groups_from_list(fun(P) -> provider_get(P, namespace) end, BareProviders), + ByNamespace = group_by_namespace(BareProviders), Cmds0 = maps:fold( fun(NS,Ps,CmdAcc) -> namespace_to_cmpl_cmds(NS, Ps)++CmdAcc end, [], @@ -162,6 +162,22 @@ provider_get(P, short_desc) -> provider_get(P, namespace) -> element(12, P). +-if(?OTP_RELEASE >= 25). +group_by_namespace(Ps) -> + maps:groups_from_list(fun(P) -> provider_get(P, namespace) end, Ps). +-else. +group_by_namespace(Ps) -> + lists:foldl(fun(P, Acc) -> + K=provider_get(P, namespace), + case Acc of + #{K:=Vs}->Acc#{K:=[P|Vs]}; + _ -> Acc#{K=>[P]} + end + end, + #{}, + Ps). +-endif. + -spec format_error(any()) -> iolist(). format_error({error_writing_file,File,Err}) -> io_lib:format("Error occurred when trying to write into ~p file.~nReason: ~p~n", [File,Err]); diff --git a/apps/rebar/test/rebar_completion_SUITE.erl b/apps/rebar/test/rebar_completion_SUITE.erl index 96a8d6d71..53e25490b 100644 --- a/apps/rebar/test/rebar_completion_SUITE.erl +++ b/apps/rebar/test/rebar_completion_SUITE.erl @@ -2,6 +2,7 @@ -compile([export_all, nowarn_export_all]). +-include_lib("stdlib/include/assert.hrl"). -include_lib("common_test/include/ct.hrl"). suite() -> @@ -22,12 +23,22 @@ init_per_suite(Config) -> end_per_suite(_Config) -> ok. +init_per_testcase(check_bash, Config) -> + case shell_available(bash) of + true -> + rebar_test_utils:init_rebar_state(Config, "completion_"); + false -> + {skip, "bash not found"} + end; init_per_testcase(_, Config) -> rebar_test_utils:init_rebar_state(Config, "completion_"). end_per_testcase(_, _Config) -> ok. +shell_available(Shell) -> + os:find_executable(atom_to_list(Shell)) =/= false. + %% test cases test_competion_gen(Config) -> @@ -36,7 +47,7 @@ test_competion_gen(Config) -> lists:foreach(fun(Shell) -> file:delete(ComplFile), completion_gen(Config, #{shell=>Shell, file=>ComplFile}), - {Shell, true} = {Shell,filelib:is_file(ComplFile)} + ?assertEqual({Shell, true}, {Shell,filelib:is_file(ComplFile)}) end, Shells). @@ -53,7 +64,7 @@ check_bash(Config) -> %% aliases CompleteCmd = "complete -o nospace -F _rebar3 ", lists:foreach(fun(Alias) -> - {Alias, {match, _}} = {Alias, re:run(Completion, CompleteCmd++Alias++"\n")} + ?assertMatch({Alias, {match, _}}, {Alias, re:run(Completion, CompleteCmd++Alias++"\n")}) end, ["rebar3" | Aliases]). diff --git a/rebar3.crashdump b/rebar3.crashdump deleted file mode 100644 index e6eea2e27..000000000 --- a/rebar3.crashdump +++ /dev/null @@ -1,1149 +0,0 @@ -Error: function_clause -[{rebar_completion_bash,nested_cmd_clause, - [#{args => [],name => "do", - help => - "Higher order provider for running multiple tasks in a sequence.", - cmds => - [#{args => [],name => "lfe", - help => "lfe namespace", - cmds => - [#{args => [],name => "versions", - help => "Get various versions", - cmds => []}, - #{args => [],name => "run-release", - help => "Run an LFE release", - cmds => []}, - #{args => [],name => "run-escript", - help => "Run an LFE escript", - cmds => []}, - #{args => - [#{short => 109,type => string, - long => "main", - help => - "Provide project file that contains a main function"}], - name => "run", - help => - "Run the project's main function.", - cmds => []}, - #{args => - [#{short => undefined, - type => atom,long => "name", - help => - "Gives a long name to the node."}, - #{short => undefined, - type => atom,long => "sname", - help => - "Gives a short name to the node."}, - #{short => undefined, - type => atom, - long => "setcookie", - help => - "Sets the cookie if the node is distributed."}, - #{short => undefined, - type => string, - long => "script", - help => - "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."}, - #{short => undefined, - type => string,long => "apps", - help => - "A list of apps to boot before starting the REPL. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."}, - #{short => 114,type => atom, - long => "relname", - help => - "Name of the release to use as a template for the REPL session"}, - #{short => 118,type => string, - long => "relvsn", - help => - "Version of the release to use for the shell session"}, - #{short => undefined, - type => boolean, - long => "start_clean", - help => - "Cancel any applications in the 'apps' list or release."}, - #{short => undefined, - type => string, - long => "env_file", - help => - "Path to file of os environment variables to setup before expanding vars in config files."}, - #{short => undefined, - type => string, - long => "user_drv_args", - help => - "Arguments passed to user_drv start function for creating custom shells."}], - name => "repl", - help => - "Run an LFE REPL with project apps and deps in path.", - cmds => []}, - #{args => [],name => "release", - help => - "Build a release for the LFE project", - cmds => []}, - #{args => - [#{short => undefined, - type => string,long => "app", - help => - "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, - #{short => undefined, - type => string, - long => "application", - help => - "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, - #{short => undefined, - type => boolean, - long => "color", - help => - "Whether to display tests in ANSI-highlighted colors."}, - #{short => 99,type => boolean, - long => "cover", - help => - "Generate cover data. Defaults to false."}, - #{short => undefined, - type => string, - long => "cover_export_name", - help => - "Base name of the coverdata file to write"}, - #{short => 100,type => string, - long => "dir", - help => - "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."}, - #{short => 102,type => string, - long => "file", - help => - "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."}, - #{short => 115,type => string, - long => "suite", - help => - "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, - #{short => 109,type => string, - long => "module", - help => - "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, - #{short => 118,type => boolean, - long => "verbose", - help => - "Verbose output. Defaults to false."}, - #{short => 112,type => boolean, - long => "profile", - help => - "Show the slowest tests. Defaults to false."}, - #{short => undefined, - type => atom,long => "sname", - help => - "Gives a short name to the node"}, - #{short => undefined, - type => atom,long => "name", - help => - "Gives a long name to the node"}, - #{short => 116,type => string, - long => "test", - help => - "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."}, - #{short => 108,type => atom, - long => "test-listener", - help => - "Which test listener to run; legal values are 'ltest-listener', 'eunit_progress', and 'eunit_surefire'."}, - #{short => 116,type => atom, - long => "test-type", - help => - "type of tests to run; legal valuues are unit, system, integration, or all"}, - #{short => 103,type => string, - long => "generator", - help => - "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."}], - name => "ltest", - help => - "Run LFE tests that have been created with the ltest project.", - cmds => []}, - #{args => [],name => "escriptize", - help => - "Escriptize an LFE escript project", - cmds => []}, - #{args => - [#{short => undefined, - type => string,long => "path", - help => - "Provide the path to the file or files to convert (wildcard/globbing is supported)."}], - name => "confabulate", - help => - "Convert the given LFE data file(s) to Erlang file(s).", - cmds => []}, - #{args => [],name => "compile", - help => "Compile LFE project", - cmds => []}, - #{args => [],name => "clean-cache", - help => - "Remove the project's cache directories", - cmds => []}, - #{args => [],name => "clean-build", - help => - "Remove the rebar _build directory", - cmds => []}, - #{args => [],name => "clean-all", - help => "Execute all clean commands", - cmds => []}, - #{args => [],name => "clean", - help => "Clean apps .ebin files", - cmds => []}]}, - #{args => [],name => "plugins", - help => "plugins namespace", - cmds => - [#{args => - [#{short => undefined, - type => string, - long => undefined, - help => "Plugin to upgrade"}, - #{short => 97,type => undefined, - long => "all", - help => - "Upgrade all plugins."}], - name => "upgrade", - help => "Upgrade plugins",cmds => []}, - #{args => [],name => "list", - help => - "List local and global plugins for this project", - cmds => []}]}, - #{args => [],name => "hex", - help => "hex namespace", - cmds => - [#{args => - [#{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}, - #{short => 121,type => boolean, - long => "yes", - help => - "Publishes the package without any confirmation prompts"}, - #{short => undefined, - type => boolean, - long => "replace", - help => - "Allows overwriting an existing package version if it exists. Private packages can always be overwritten, publicpackages can only be overwritten within one hour after they were initially published."}, - #{short => 112,type => string, - long => "package", - help => - "Specifies the package to use with the publish command, currently only utilized in a revert operation"}, - #{short => undefined, - type => string, - long => "revert", - help => - "Revert given version, if the last version is reverted the package is removed"}, - #{short => undefined, - type => boolean, - long => "without-docs", - help => - "Publishing a package without publishing documentation that may be automatically generated"}], - name => "publish", - help => - "Publish a new version of your package and update the package", - cmds => []}, - #{args => - [#{short => undefined, - type => string, - long => undefined, - help => - "Name of the package to retire."}, - #{short => undefined, - type => string, - long => undefined, - help => - "Version of the package to retire."}, - #{short => undefined, - type => string, - long => undefined, - help => - "Reason to retire package."}, - #{short => undefined, - type => string, - long => undefined, - help => - "Clarifying message for retirement"}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "retire", - help => - "Mark a package as deprecated.", - cmds => []}, - #{args => - [#{short => undefined, - type => string, - long => undefined, - help => - "Name of the package to delete."}, - #{short => undefined, - type => string, - long => undefined, - help => - "Version of the package to delete."}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "revert", - help => - "Delete a package from the repository", - cmds => []}, - #{args => - [#{short => undefined, - type => string, - long => undefined, - help => "Search term."}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "search", - help => - "Display packages matching the given search query", - cmds => []}, - #{args => - [#{short => undefined, - type => string, - long => "revert", - help => - "Revert given version."}, - #{short => undefined, - type => boolean, - long => "dry-run", - help => - "Generates docs (if configured) but does not publish the docs. Useful for inspecting docs before publishing."}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "docs", - help => - "Publish documentation for the current project and version", - cmds => []}, - #{args => - [#{short => undefined, - type => string, - long => undefined, - help => "Repo task to run"}, - #{short => undefined, - type => string, - long => undefined, - help => - "Name of a repository"}, - #{short => 107,type => string, - long => "key", - help => - "Authentication key for repository"}], - name => "repo", - help => - "Add, remove or list configured repositories and their auth keys", - cmds => []}, - #{args => - [#{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}, - #{short => 108,type => string, - long => "level", - help => "Ownership level."}, - #{short => 116,type => boolean, - long => "transfer", - help => "Transfer Package"}], - name => "owner", - help => - "Add, remove, transfer or list package owners", - cmds => []}, - #{args => - [#{short => 97,type => boolean, - long => "all",help => "all."}, - #{short => 107,type => string, - long => "key-name", - help => "key-name"}, - #{short => 112,type => list, - long => "permission", - help => "perms."}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "key", - help => - "Remove or list API keys associated with your account", - cmds => []}, - #{args => - [#{short => 105,type => string, - long => "increment", - help => - "Type of semver increment: major, minor or patch"}, - #{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "cut", - help => - "Increment version number and publish package", - cmds => []}, - #{args => - [#{short => 114,type => string, - long => "repo", - help => - "Repository to use for this command."}], - name => "user", - help => "Hex user tasks", - cmds => []}]}, - #{args => [],name => "experimental", - help => "experimental namespace", - cmds => - [#{args => [],name => "vendor", - help => - "Turns dependencies into top-level apps", - cmds => []}]}, - #{args => [],name => "local", - help => "local namespace", - cmds => - [#{args => [],name => "upgrade", - help => - "Download latest rebar3 escript and extract.", - cmds => []}, - #{args => [],name => "install", - help => - "Extract libs from rebar3 escript along with a run script.", - cmds => []}]}, - #{args => [],name => "alias", - help => "List aliases' definitions.", - cmds => []}, - #{args => [],name => "xref", - help => "Run cross reference analysis.", - cmds => []}, - #{args => [],name => "version", - help => - "Print version for rebar and current Erlang.", - cmds => []}, - #{args => - [#{short => 97,type => undefined, - long => "all", - help => "Upgrade all dependencies."}, - #{short => undefined,type => string, - long => undefined, - help => - "List of packages to upgrade."}], - name => "upgrade", - help => "Upgrade dependencies.",cmds => []}, - #{args => [],name => "update", - help => "Update package index.",cmds => []}, - #{args => - [#{short => 97,type => undefined, - long => "all", - help => - "Unlock all dependencies and remove the lock file."}, - #{short => undefined,type => string, - long => undefined, - help => - "List of packages to unlock."}], - name => "unlock", - help => "Unlock dependencies.",cmds => []}, - #{args => - [#{short => undefined,type => boolean, - long => "all", - help => - "If true runs the command against all configured releases"}, - #{short => 110,type => string, - long => "relname", - help => - "Specify the name for the release that will be generated"}, - #{short => 118,type => string, - long => "relvsn", - help => - "Specify the version for the release"}, - #{short => 117,type => string, - long => "upfrom", - help => - "Only valid with relup target, specify the release to upgrade from"}, - #{short => 111,type => string, - long => "output-dir", - help => - "The output directory for the release. This is `./` by default."}, - #{short => 104,type => undefined, - long => "help",help => "Print usage"}, - #{short => 108,type => string, - long => "lib-dir", - help => - "Additional dir that should be searched for OTP Apps"}, - #{short => 100,type => boolean, - long => "dev-mode", - help => - "Symlink the applications and configuration into the release instead of copying"}, - #{short => 105,type => string, - long => "include-erts", - help => - "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, - #{short => 97,type => string, - long => "override", - help => - "Provide an app name and a directory to override in the form :"}, - #{short => 99,type => string, - long => "config", - help => "The path to a config file"}, - #{short => undefined,type => string, - long => "overlay_vars", - help => - "Path to a file of overlay variables"}, - #{short => undefined,type => string, - long => "vm_args", - help => - "Path to a file to use for vm.args"}, - #{short => undefined,type => string, - long => "sys_config", - help => - "Path to a file to use for sys.config"}, - #{short => undefined,type => string, - long => "system_libs", - help => - "Boolean or path to dir of Erlang system libs"}, - #{short => undefined,type => undefined, - long => "version", - help => "Print relx version"}, - #{short => 114,type => string, - long => "root", - help => "The project root directory"}, - #{short => 109,type => string, - long => "relnames", - help => - "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], - name => "tar", - help => - "Tar archive of release built of project.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => "config", - help => - "Path to the config file to use. Defaults to {shell, [{config, File}]} and then the relx sys.config file if not specified."}, - #{short => undefined,type => atom, - long => "name", - help => - "Gives a long name to the node."}, - #{short => undefined,type => atom, - long => "sname", - help => - "Gives a short name to the node."}, - #{short => undefined,type => atom, - long => "setcookie", - help => - "Sets the cookie if the node is distributed."}, - #{short => undefined,type => string, - long => "script", - help => - "Path to an escript file to run before starting the project apps. Defaults to rebar.config {shell, [{script_file, File}]} if not specified."}, - #{short => undefined,type => string, - long => "apps", - help => - "A list of apps to boot before starting the shell. (E.g. --apps app1,app2,app3) Defaults to rebar.config {shell, [{apps, Apps}]} or relx apps if not specified."}, - #{short => 114,type => atom, - long => "relname", - help => - "Name of the release to use as a template for the shell session."}, - #{short => 118,type => string, - long => "relvsn", - help => - "Version of the release to use for the shell session."}, - #{short => undefined,type => boolean, - long => "start-clean", - help => - "Cancel any applications in the 'apps' list or release."}, - #{short => undefined,type => string, - long => "env-file", - help => - "Path to file of os environment variables to setup before expanding vars in config files."}, - #{short => undefined,type => string, - long => "user_drv_args", - help => - "For versions of Erlang prior to 26, this option can be used to pass arguments to the user_drv start function for creating custom shells. Starting with Erlang 26, the arguments defined with this option are applied to the shell start_interactive function."}, - #{short => undefined,type => string, - long => "eval", - help => - "Erlang term(s) to execute after the apps have been started, but before the shell is presented to the user."}], - name => "shell", - help => - "Run shell with project apps and deps in path.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => undefined, - help => - "Task to print details for."}], - name => "report", - help => - "Provide a crash report to be sent to the rebar3 issues page.", - cmds => []}, - #{args => - [#{short => undefined,type => boolean, - long => "all", - help => - "If true runs the command against all configured releases"}, - #{short => 110,type => string, - long => "relname", - help => - "Specify the name for the release that will be generated"}, - #{short => 118,type => string, - long => "relvsn", - help => - "Specify the version for the release"}, - #{short => 117,type => string, - long => "upfrom", - help => - "Only valid with relup target, specify the release to upgrade from"}, - #{short => 111,type => string, - long => "output-dir", - help => - "The output directory for the release. This is `./` by default."}, - #{short => 104,type => undefined, - long => "help",help => "Print usage"}, - #{short => 108,type => string, - long => "lib-dir", - help => - "Additional dir that should be searched for OTP Apps"}, - #{short => 100,type => boolean, - long => "dev-mode", - help => - "Symlink the applications and configuration into the release instead of copying"}, - #{short => 105,type => string, - long => "include-erts", - help => - "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, - #{short => 97,type => string, - long => "override", - help => - "Provide an app name and a directory to override in the form :"}, - #{short => 99,type => string, - long => "config", - help => "The path to a config file"}, - #{short => undefined,type => string, - long => "overlay_vars", - help => - "Path to a file of overlay variables"}, - #{short => undefined,type => string, - long => "vm_args", - help => - "Path to a file to use for vm.args"}, - #{short => undefined,type => string, - long => "sys_config", - help => - "Path to a file to use for sys.config"}, - #{short => undefined,type => string, - long => "system_libs", - help => - "Boolean or path to dir of Erlang system libs"}, - #{short => undefined,type => undefined, - long => "version", - help => "Print relx version"}, - #{short => 114,type => string, - long => "root", - help => "The project root directory"}, - #{short => 109,type => string, - long => "relnames", - help => - "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], - name => "relup", - help => "Create relup of releases.", - cmds => []}, - #{args => - [#{short => undefined,type => boolean, - long => "all", - help => - "If true runs the command against all configured releases"}, - #{short => 110,type => string, - long => "relname", - help => - "Specify the name for the release that will be generated"}, - #{short => 118,type => string, - long => "relvsn", - help => - "Specify the version for the release"}, - #{short => 117,type => string, - long => "upfrom", - help => - "Only valid with relup target, specify the release to upgrade from"}, - #{short => 111,type => string, - long => "output-dir", - help => - "The output directory for the release. This is `./` by default."}, - #{short => 104,type => undefined, - long => "help",help => "Print usage"}, - #{short => 108,type => string, - long => "lib-dir", - help => - "Additional dir that should be searched for OTP Apps"}, - #{short => 100,type => boolean, - long => "dev-mode", - help => - "Symlink the applications and configuration into the release instead of copying"}, - #{short => 105,type => string, - long => "include-erts", - help => - "If true include a copy of erts used to build with, if a path include erts at that path. If false, do not include erts"}, - #{short => 97,type => string, - long => "override", - help => - "Provide an app name and a directory to override in the form :"}, - #{short => 99,type => string, - long => "config", - help => "The path to a config file"}, - #{short => undefined,type => string, - long => "overlay_vars", - help => - "Path to a file of overlay variables"}, - #{short => undefined,type => string, - long => "vm_args", - help => - "Path to a file to use for vm.args"}, - #{short => undefined,type => string, - long => "sys_config", - help => - "Path to a file to use for sys.config"}, - #{short => undefined,type => string, - long => "system_libs", - help => - "Boolean or path to dir of Erlang system libs"}, - #{short => undefined,type => undefined, - long => "version", - help => "Print relx version"}, - #{short => 114,type => string, - long => "root", - help => "The project root directory"}, - #{short => 109,type => string, - long => "relnames", - help => - "Like --all, but only build the releases in the list, e.g. --relnames rel1,rel2"}], - name => "release", - help => "Build release of project.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => "app", - help => - "Comma separated list of applications to return paths for."}, - #{short => undefined,type => boolean, - long => "base", - help => - "Return the `base' path of the current profile."}, - #{short => undefined,type => boolean, - long => "bin", - help => - "Return the `bin' path of the current profile."}, - #{short => undefined,type => boolean, - long => "ebin", - help => - "Return all `ebin' paths of the current profile's applications."}, - #{short => undefined,type => boolean, - long => "lib", - help => - "Return the `lib' path of the current profile."}, - #{short => undefined,type => boolean, - long => "priv", - help => - "Return the `priv' path of the current profile's applications."}, - #{short => 115,type => string, - long => "separator", - help => - "In case of multiple return paths, the separator character to use to join them."}, - #{short => undefined,type => boolean, - long => "src", - help => - "Return the `src' path of the current profile's applications."}, - #{short => undefined,type => boolean, - long => "rel", - help => - "Return the `rel' path of the current profile."}], - name => "path", - help => - "Print paths to build dirs in current profile.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => undefined, - help => - "Package to fetch information for."}], - name => "pkgs", - help => "List information for a package.", - cmds => []}, - #{args => - [#{short => 102,type => undefined, - long => "force", - help => "overwrite existing files"}], - name => "new", - help => "Create new project from templates.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => undefined, - help => "Task to print help for."}], - name => "help", - help => - "Display a list of tasks or help for a given task or subtask.", - cmds => []}, - #{args => [],name => "get-deps", - help => "Fetch dependencies.",cmds => []}, - #{args => - [#{short => undefined,type => string, - long => "app", - help => - "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, - #{short => undefined,type => string, - long => "application", - help => - "Comma separated list of application test suites to run. Equivalent to `[{application, App}]`."}, - #{short => 99,type => boolean, - long => "cover", - help => - "Generate cover data. Defaults to false."}, - #{short => undefined,type => string, - long => "cover_export_name", - help => - "Base name of the coverdata file to write"}, - #{short => 112,type => boolean, - long => "profile", - help => - "Show the slowest tests. Defaults to false."}, - #{short => 100,type => string, - long => "dir", - help => - "Comma separated list of dirs to load tests from. Equivalent to `[{dir, Dir}]`."}, - #{short => 102,type => string, - long => "file", - help => - "Comma separated list of files to load tests from. Equivalent to `[{file, File}]`."}, - #{short => 109,type => string, - long => "module", - help => - "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, - #{short => 116,type => string, - long => "test", - help => - "Comma separated list of tests to run. The format is `Module:Func1+Func2`. Equivalent to `[{test, Module, Function}]`."}, - #{short => 115,type => string, - long => "suite", - help => - "Comma separated list of modules to load tests from. Equivalent to `[{module, Module}]`."}, - #{short => 103,type => string, - long => "generator", - help => - "Comma separated list of generators to load tests from. The format is `Module:Func1+Func2`. Equivalent to `[{generator, Module, Function}]`."}, - #{short => 118,type => boolean, - long => "verbose", - help => - "Verbose output. Defaults to false."}, - #{short => undefined,type => atom, - long => "name", - help => - "Gives a long name to the node"}, - #{short => undefined,type => atom, - long => "sname", - help => - "Gives a short name to the node"}, - #{short => undefined,type => string, - long => "sys_config", - help => - "List of application config files"}, - #{short => undefined,type => atom, - long => "setcookie", - help => - "Sets the cookie if the node is distributed"}], - name => "eunit",help => "Run EUnit Tests.", - cmds => []}, - #{args => - [#{short => 97,type => string, - long => "main-app", - help => - "Specify the name of the application to build an escript for."}], - name => "escriptize", - help => "Generate escript archive.", - cmds => []}, - #{args => [],name => "edoc", - help => "Generate documentation using edoc.", - cmds => []}, - #{args => - [#{short => 105,type => boolean, - long => "incremental", - help => - "Enable incremental analysis mode. Default: false"}, - #{short => 117,type => boolean, - long => "update-plt", - help => - "Enable updating the PLT. Default: true"}, - #{short => 115,type => boolean, - long => "succ-typings", - help => - "Enable success typing analysis. Default: true"}, - #{short => undefined,type => string, - long => "base-plt-location", - help => - "The location of base PLT file, defaults to $HOME/.cache/rebar3"}, - #{short => undefined,type => string, - long => "plt-location", - help => - "The location of the PLT file, defaults to the profile's base directory"}, - #{short => undefined,type => string, - long => "plt-prefix", - help => - "The prefix to the PLT file, defaults to \"rebar3\""}, - #{short => 97,type => string, - long => "app", - help => - "Perform success typing analysis of a single application"}, - #{short => undefined,type => string, - long => "base-plt-prefix", - help => - "The prefix to the base PLT file, defaults to \"rebar3\""}, - #{short => undefined,type => boolean, - long => "statistics", - help => - "Print information about the progress of execution. Default: false"}], - name => "dialyzer", - help => - "Run the Dialyzer analyzer on the project.", - cmds => []}, - #{args => - [#{short => 118,type => undefined, - long => "verbose", - help => - "Print repo and branch/tag/ref for git and hg deps"}], - name => "tree", - help => "Print dependency tree.",cmds => []}, - #{args => [],name => "deps", - help => "List dependencies",cmds => []}, - #{args => - [#{short => 114,type => boolean, - long => "reset", - help => "Reset all coverdata."}, - #{short => 118,type => boolean, - long => "verbose", - help => "Print coverage analysis."}, - #{short => 109,type => integer, - long => "min_coverage", - help => - "Mandate a coverage percentage required to succeed (0..100)"}], - name => "cover", - help => "Perform coverage analysis.", - cmds => []}, - #{args => - [#{short => 97,type => string, - long => "aliases", - help => - "Comma separated list of OS level aliases on which rebar3 completion will be triggered (e.g. \"rebar\" or \"r3\")."}, - #{short => 102,type => string, - long => "file", - help => - "Completion file name. Relative to \"_build/\"."}, - #{short => 115,type => atom, - long => "shell", - help => - "Shell type, 'bash' or 'zsh'."}], - name => "completion", - help => - "Generate completion file for your shell.", - cmds => []}, - #{args => - [#{short => 100,type => undefined, - long => "deps_only", - help => - "Only compile dependencies, no project apps will be built."}], - name => "compile", - help => - "Compile apps .app.src and .erl files.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => "dir", - help => - "List of additional directories containing test suites"}, - #{short => undefined,type => string, - long => "suite", - help => "List of test suites to run"}, - #{short => undefined,type => string, - long => "group", - help => "List of test groups to run"}, - #{short => undefined,type => string, - long => "case", - help => "List of test cases to run"}, - #{short => undefined,type => string, - long => "label",help => "Test label"}, - #{short => undefined,type => string, - long => "config", - help => "List of config files"}, - #{short => undefined,type => string, - long => "spec", - help => - "List of test specifications"}, - #{short => undefined,type => boolean, - long => "join_specs", - help => - "Merge all test specifications and perform a single test run"}, - #{short => undefined,type => boolean, - long => "allow_user_terms", - help => - "Allow user defined config values in config files"}, - #{short => undefined,type => string, - long => "logdir", - help => "Log folder"}, - #{short => undefined,type => string, - long => "logopts", - help => - "Options for common test logging"}, - #{short => undefined,type => integer, - long => "verbosity", - help => "Verbosity"}, - #{short => 99,type => boolean, - long => "cover", - help => "Generate cover data"}, - #{short => undefined,type => string, - long => "cover_export_name", - help => - "Base name of the coverdata file to write"}, - #{short => undefined,type => integer, - long => "repeat", - help => "How often to repeat tests"}, - #{short => undefined,type => string, - long => "duration", - help => - "Max runtime (format: HHMMSS)"}, - #{short => undefined,type => string, - long => "until", - help => "Run until (format: HHMMSS)"}, - #{short => undefined,type => string, - long => "force_stop", - help => - "Force stop on test timeout (true | false | skip_rest)"}, - #{short => undefined,type => boolean, - long => "basic_html", - help => "Show basic HTML"}, - #{short => undefined,type => string, - long => "stylesheet", - help => - "CSS stylesheet to apply to html output"}, - #{short => undefined,type => string, - long => "decrypt_key", - help => - "Path to key for decrypting config"}, - #{short => undefined,type => string, - long => "decrypt_file", - help => - "Path to file containing key for decrypting config"}, - #{short => undefined,type => boolean, - long => "abort_if_missing_suites", - help => - "Abort if suites are missing"}, - #{short => undefined,type => integer, - long => "multiply_timetraps", - help => []}, - #{short => undefined,type => boolean, - long => "scale_timetraps", - help => "Scale timetraps"}, - #{short => undefined,type => string, - long => "create_priv_dir", - help => - "Create priv dir (auto_per_run | auto_per_tc | manual_per_tc)"}, - #{short => undefined,type => string, - long => "include", - help => - "Directories containing additional include files"}, - #{short => undefined,type => string, - long => "readable", - help => - "Shows test case names and only displays logs to shell on failures (true | compact | false)"}, - #{short => 118,type => boolean, - long => "verbose", - help => "Verbose output"}, - #{short => undefined,type => atom, - long => "name", - help => - "Gives a long name to the node"}, - #{short => undefined,type => atom, - long => "sname", - help => - "Gives a short name to the node"}, - #{short => undefined,type => atom, - long => "setcookie", - help => - "Sets the cookie if the node is distributed"}, - #{short => undefined,type => string, - long => "sys_config", - help => - "List of application config files"}, - #{short => undefined,type => boolean, - long => "compile_only", - help => - "Compile modules in the project with the test configuration but do not run the tests"}, - #{short => undefined,type => boolean, - long => "retry", - help => - "Experimental feature. If any specification for previously failing test is found, runs them."}, - #{short => undefined,type => boolean, - long => "fail_fast", - help => - "Experimental feature. If any test fails, the run is aborted. Since common test does not support this natively, we abort the rebar3 run on a failure. This May break CT's disk logging and other rebar3 features."}], - name => "ct",help => "Run Common Tests.", - cmds => []}, - #{args => - [#{short => 97,type => undefined, - long => "all", - help => - "Clean all apps include deps"}, - #{short => undefined,type => string, - long => "apps", - help => - "Clean a specific list of apps or dependencies"}, - #{short => 112,type => string, - long => "profile", - help => - "Clean under profile. Equivalent to `rebar3 as clean`"}], - name => "clean", - help => - "Remove compiled beam files from apps.", - cmds => []}, - #{args => - [#{short => undefined,type => string, - long => undefined, - help => "Profiles to run as."}], - name => "as", - help => - "Higher order provider for running multiple tasks in a sequence as a certain profiles.", - cmds => - [#{args => [],name => "test",help => [], - cmds => []}, - #{args => [],name => "systest", - help => [],cmds => []}, - #{args => [],name => "dialyzer", - help => [],cmds => []}, - #{args => [],name => "prod",help => [], - cmds => []}]}, - #{args => [],name => "cmd", - help => - "A rebar3 plugin to run custom shell commands 'cmd '.", - cmds => []}, - #{args => [],name => "lint", - help => "A rebar plugin for elvis", - cmds => []}]}, - [],1], - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, - {line,23}]}, - {rebar_completion_bash,'-main/2-lc$^2/1-3-',1, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, - {line,83}]}, - {rebar_completion_bash,main,2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, - {line,83}]}, - {rebar_completion_bash,generate,2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_completion_bash.erl"}, - {line,15}]}, - {rebar_prv_completion,do,1, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_prv_completion.erl"}, - {line,68}]}, - {rebar_core,do,2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_core.erl"}, - {line,155}]}, - {rebar3,run_aux,2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar3.erl"}, - {line,205}]}, - {rebar3,main,1, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar3.erl"}, - {line,66}]}] - From 0d9a8de9615214e92cd01e126a4075c31e484c8a Mon Sep 17 00:00:00 2001 From: Marko Mindek Date: Sat, 2 Mar 2024 17:55:15 +0100 Subject: [PATCH 5/6] zsh completion gen --- apps/rebar/rebar3.crashdump | 1186 -------------------- apps/rebar/src/rebar_completion_zsh.erl | 119 ++ apps/rebar/src/rebar_prv_completion.erl | 8 +- apps/rebar/test/rebar_completion_SUITE.erl | 23 +- 4 files changed, 147 insertions(+), 1189 deletions(-) delete mode 100644 apps/rebar/rebar3.crashdump create mode 100644 apps/rebar/src/rebar_completion_zsh.erl diff --git a/apps/rebar/rebar3.crashdump b/apps/rebar/rebar3.crashdump deleted file mode 100644 index 56bceecfb..000000000 --- a/apps/rebar/rebar3.crashdump +++ /dev/null @@ -1,1186 +0,0 @@ -error: undef -[{rebar3_lfe_prv_compile,init, - [{state_t,"/home/mmin/oss/rebar3/apps/rebar", - {dict,6,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}], - [{plugins,default},{rebar3_lfe,"0.4.8"}], - [{project_plugins,default}]], - [[deps_dir,112,108,117,103,105,110,115]], - [[plugins,{rebar3_lfe,"0.4.8"}],[overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,1,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[],[],[], - [[all_plugin_deps,"/home/mmin/.cache/rebar3/plugins/erlang_color/ebin", - "/home/mmin/.cache/rebar3/plugins/lfe/ebin", - "/home/mmin/.cache/rebar3/plugins/ltest/ebin", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin"]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,4,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}], - [{plugins,default},{rebar3_lfe,"0.4.8"}], - [{project_plugins,default}]], - [], - [[plugins,{rebar3_lfe,"0.4.8"}]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - undefined,[], - [global], - default,[], - {[],[]}, - undefined,[],[], - [{app_info_t,<<"erlang_color">>, - "/home/mmin/.cache/rebar3/plugins/erlang_color/src/color.app.src", - undefined, - "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin/color.app","1.0.0", - "1.0.0",<<"ltest">>, - [{description,"ANSI colors for your Erlang"}, - {vsn,"1.0.0"}, - {modules,[color]}, - {registered,[]}, - {applications,[kernel,stdlib]}, - {env,[]}, - {pkg_name,erlang_color}, - {maintainers,["Julian Duque","Duncan McGreggor"]}, - {licenses,["MIT"]}, - {links, - [{"GitHub","https://github.com/julianduque/erlang-color"}, - {"Hex","https://hex.pm/packages/erlang_color"}]}], - [kernel,stdlib], - [],[],[], - [default,prod], - {dict,5,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info,{i,"include"}],[overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,6,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info,{i,"include"}],[overrides]], - [],[],[],[],[], - [[{plugins,global}]], - [],[],[],[],[],[]}}}, - 2,"/home/mmin/.cache/rebar3/plugins/erlang_color", - "/home/mmin/.cache/rebar3/plugins/erlang_color", - "/home/mmin/.cache/rebar3/plugins/erlang_color",undefined, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined,api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, - repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"lfe">>, - "/home/mmin/.cache/rebar3/plugins/lfe/src/lfe.app.src",undefined, - "/home/mmin/.cache/rebar3/plugins/lfe/ebin/lfe.app","2.1.2","2.1.2", - <<"rebar3_lfe">>, - [{description,"Lisp Flavored Erlang (LFE)"}, - {vsn,"2.1.2"}, - {modules, - [cl,clj,lfe,lfe_abstract_code,lfe_bits,lfe_codegen,lfe_codelift, - lfe_comp,lfe_docs,lfe_edlin_expand,lfe_env,lfe_eval,lfe_eval_bits, - lfe_gen,lfe_init,lfe_internal,lfe_io,lfe_io_format,lfe_io_pretty, - lfe_io_write,lfe_lib,lfe_lint,lfe_macro,lfe_macro_export, - lfe_macro_include,lfe_macro_record,lfe_macro_struct,lfe_ms,lfe_parse, - lfe_qlc,lfe_scan,lfe_shell,lfe_shell_docs,lfe_struct,lfe_translate, - lfe_types,lfescript,scm]}, - {registered,[]}, - {applications,[kernel,stdlib,compiler]}, - {maintainers,["Robert Virding"]}, - {licenses,["Apache"]}, - {links, - [{"Github","https://github.com/lfe/lfe"}, - {"Main site","https://lfe.io/"}, - {"Documentation","https://lfe.io/use/#reference"}]}, - {files, - ["README.md","LICENSE","src","c_src","include","bin","rebar.*", - "*akefile","*.escript"]}], - [kernel,stdlib,compiler], - [],[],[], - [default,prod], - {dict,7,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info, - {d,'ERLANG_VERSION',"24.3.4.14"}, - {d,'HAS_MAPS',true}, - {d,'HAS_FULL_KEYS',true}, - {d,'NEW_REC_CORE',true}, - {d,'NEW_RAND',true}, - {d,'NEW_BOOL_GUARD',true}, - {d,'HAS_FLOOR',true}, - {d,'HAS_CEIL',true}, - {d,'NEW_STACKTRACE',true}, - {d,'EEP48',true}], - [profiles, - {test, - [{deps,[proper]}, - {plugins, - [{rebar3_proper, - {git,"https://github.com/ferd/rebar3_proper", - {tag,"0.12.1"}}}]}, - {src_dirs,["src","test"]}]}, - {dialyzer,[]}], - [pre_hooks, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,8,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info, - {d,'ERLANG_VERSION',"24.3.4.14"}, - {d,'HAS_MAPS',true}, - {d,'HAS_FULL_KEYS',true}, - {d,'NEW_REC_CORE',true}, - {d,'NEW_RAND',true}, - {d,'NEW_BOOL_GUARD',true}, - {d,'HAS_FLOOR',true}, - {d,'HAS_CEIL',true}, - {d,'NEW_STACKTRACE',true}, - {d,'EEP48',true}], - [profiles, - {test, - [{deps,[proper]}, - {plugins, - [{rebar3_proper, - {git,"https://github.com/ferd/rebar3_proper", - {tag,"0.12.1"}}}]}, - {src_dirs,["src","test"]}]}, - {dialyzer,[]}], - [pre_hooks, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], - [overrides]], - [],[],[],[],[], - [[{plugins,global}]], - [],[],[],[],[],[]}}}, - 1,"/home/mmin/.cache/rebar3/plugins/lfe", - "/home/mmin/.cache/rebar3/plugins/lfe", - "/home/mmin/.cache/rebar3/plugins/lfe",undefined, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined,api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, - repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"ltest">>, - "/home/mmin/.cache/rebar3/plugins/ltest/src/ltest.app.src",undefined, - "/home/mmin/.cache/rebar3/plugins/ltest/ebin/ltest.app","0.13.5", - "0.13.5",<<"rebar3_lfe">>, - [{description,"A Testing Framework for LFE"}, - {vsn,"0.13.5"}, - {modules, - ['ltest-color','ltest-const','ltest-formatter','ltest-integration', - 'ltest-listener','ltest-runner','ltest-system','ltest-unit', - 'ltest-util',ltest]}, - {registered,[]}, - {applications,[kernel,stdlib]}, - {included_applications,[]}, - {env,[]}, - {pkg_name,ltest}, - {maintainers,["Duncan McGreggor"]}, - {licenses,["BSD-3"]}, - {links, - [{"GitHub","https://github.com/lfex/ltest"}, - {"Hex","https://hex.pm/packages/ltest"}]}, - {exclude_paths,["priv"]}], - [kernel,stdlib], - [],[], - [<<"erlang_color">>,<<"lfe">>], - [default,prod], - {dict,15,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 0}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}], - [{deps,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.2.6"}]], - [[dialyzer,{warnings,[unknown]}]], - [[erl_first_files,"src/ltest-util.lfe"], - [eunit_opts,verbose], - [eunit_compile_opts,{src_dirs,["src","test"]}], - [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], - [plugins,{rebar_cmd,"0.2.6"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls,deprecated_functions], - [pre_hooks, - {app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], - [profiles, - {test, - [{eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}, - {pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, - {repl, - [{pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, - {plugins, - [{rebar3_lfe, - {git,"https://github.com/lfe-rebar3/rebar3_lfe.git", - {branch,"release/0.3.x"}}}]}]}], - [commands, - {ltest,"make check-runner-ltest"}, - {'deps-dir',"echo $REBAR_DEPS_DIR"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,{cmd,"ltest"}]}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,16,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 0}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}], - [{deps,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.2.6"}]], - [[dialyzer,{warnings,[unknown]}]], - [[erl_first_files,"src/ltest-util.lfe"], - [eunit_opts,verbose], - [eunit_compile_opts,{src_dirs,["src","test"]}], - [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], - [plugins,{rebar_cmd,"0.2.6"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls,deprecated_functions], - [pre_hooks, - {app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], - [profiles, - {test, - [{eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}, - {pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, - {repl, - [{pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, - {plugins, - [{rebar3_lfe, - {git,"https://github.com/lfe-rebar3/rebar3_lfe.git", - {branch,"release/0.3.x"}}}]}]}], - [commands, - {ltest,"make check-runner-ltest"}, - {'deps-dir',"echo $REBAR_DEPS_DIR"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,{cmd,"ltest"}]}], - [overrides]], - [],[],[],[],[], - [[{plugins,global},{rebar_cmd,"0.2.6"}]], - [],[],[],[],[],[]}}}, - 1,"/home/mmin/.cache/rebar3/plugins/ltest", - "/home/mmin/.cache/rebar3/plugins/ltest", - "/home/mmin/.cache/rebar3/plugins/ltest",undefined, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined,api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, - repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"rebar3_lfe">>, - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/src/rebar3_lfe.app.src", - undefined, - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin/rebar3_lfe.app", - "0.4.8","0.4.8",root, - [{description, - "A comprehensive LFE rebar3 plugin for all your LFE tooling needs"}, - {vsn,"0.4.8"}, - {registered,[]}, - {applications,[kernel,stdlib,lfe]}, - {env,[]}, - {modules, - [rebar3_lfe,rebar3_lfe_clean,rebar3_lfe_package,rebar3_lfe_prv_clean, - rebar3_lfe_prv_clean_all,rebar3_lfe_prv_clean_build, - rebar3_lfe_prv_clean_cache,rebar3_lfe_prv_compile, - rebar3_lfe_prv_confabulate,rebar3_lfe_prv_escriptize, - rebar3_lfe_prv_ltest,rebar3_lfe_prv_release,rebar3_lfe_prv_repl, - rebar3_lfe_prv_run,rebar3_lfe_prv_run_escript, - rebar3_lfe_prv_run_release,rebar3_lfe_prv_versions,rebar3_lfe_repl, - rebar3_lfe_utils,rebar3_lfe_version]}, - {pkg_name,rebar3_lfe}, - {licenses,["Apache 2.0"]}, - {links, - [{"GitHub","https://github.com/lfe/rebar3"}, - {"Hex","https://hex.pm/packages/rebar3_lfe"}, - {"LFE","https://github.com/lfe/lfe"}]}, - {exclude_files,["priv/testing/*"]}], - [kernel,stdlib,lfe], - [],[], - [<<"lfe">>,<<"ltest">>], - [default,prod], - {dict,11,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 1}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}, - {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, - 0}], - [{deps,default}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.4.0"}]], - [], - [[erl_opts,debug_info], - [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], - [plugins,{rebar_cmd,"0.4.0"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls,deprecated_functions], - [profiles, - {test, - [{deps,[{proper,"1.3.0"}]}, - {plugins,[{rebar3_proper,"0.12.1"}]}, - {eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}]}], - [commands, - {clean_all,"rm -rf _build rebar3.lock"}, - {test_all,"rebar3 as test check"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,coverage]}, - {clean_all,[{cmd,"clean_all"}]}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,12,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 1}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}, - {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, - 0}], - [{deps,default}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"ltest">>,{pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.4.0"}]], - [], - [[erl_opts,debug_info], - [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], - [plugins,{rebar_cmd,"0.4.0"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls,deprecated_functions], - [profiles, - {test, - [{deps,[{proper,"1.3.0"}]}, - {plugins,[{rebar3_proper,"0.12.1"}]}, - {eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}]}], - [commands, - {clean_all,"rm -rf _build rebar3.lock"}, - {test_all,"rebar3 as test check"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,coverage]}, - {clean_all,[{cmd,"clean_all"}]}], - [overrides]], - [],[],[],[],[], - [[{plugins,global},{rebar_cmd,"0.4.0"}]], - [],[],[],[],[],[]}}}, - 0,"/home/mmin/.cache/rebar3/plugins/rebar3_lfe", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe",undefined, - {pkg,<<"rebar3_lfe">>,<<"0.4.8">>, - <<"70AD90549580C5384ABFF1677B8FE874C9EEFD15FF93BF875C86D5115CBDBEBD">>, - <<"09F3E90AA6A4A7B706E64C314AB670F5C37AC77EBDC119CFB6398AA9F165EE1B">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined,api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined,repo_name => <<"hexpm">>, - repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}], - [], - [rebar_compiler_xrl,rebar_compiler_yrl,rebar_compiler_mib, - rebar_compiler_erl], - [], - [{resource,hg,rebar_hg_resource,#{},rebar_resource_v2}, - {resource,pkg,rebar_pkg_resource, - #{base_config => - #{http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>}, - repos => - [#{api_key => undefined,api_organization => undefined, - api_repository => undefined,api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}]}, - rebar_resource_v2}, - {resource,git_subdir,rebar_git_subdir_resource,#{},rebar_resource_v2}, - {resource,git,rebar_git_resource,#{},rebar_resource_v2}], - [{provider,'clean-cache',rebar3_lfe_prv_clean_cache, - {[],[]}, - true, - [{default,clean}], - [10,"Remove the project's cache directories",10,10,84,104,105,115,32, - 100,101,108,101,116,101,115,32,116,104,101,32,112,114,111,106,101,99, - 116,39,115,32,101,110,116,114,105,101,115,32,105,110,32,116,104,101,32, - 108,111,99,97,108,32,97,110,100,32,103,108,111,98,97,108,32,112,108, - 117,103,105,110,115,10,97,110,100,47,111,114,32,108,105,98,32,100,105, - 114,101,99,116,111,114,105,101,115,46,32,73,116,32,97,108,115,111,32, - 100,101,108,101,116,101,115,32,116,104,101,32,114,101,98,97,114,51,95, - 108,102,101,32,112,108,117,103,105,110,10,99,97,99,104,101,115,46,10], - "Remove the project's cache directories","rebar3 lfe clean-cache",[], - [default], - lfe}, - {provider,'clean-build',rebar3_lfe_prv_clean_build, - {[],[]}, - true, - [{default,clean}], - [10,"Remove the rebar _build directory",10,10,84,104,105,115,32,101,110, - 116,105,114,101,108,121,32,100,101,108,101,116,101,115,32,116,104,101, - 32,46,47,95,98,117,105,108,100,32,100,105,114,101,99,116,111,114,121, - 32,99,114,101,97,116,101,100,32,98,121,32,114,101,98,97,114,51,46,10], - "Remove the rebar _build directory","rebar3 lfe clean-build",[], - [default], - lfe}, - {provider,'clean-all',rebar3_lfe_prv_clean_all, - {[],[]}, - true, - [{default,clean}], - [10,"Execute all clean commands",10,10,84,104,105,115,32,100,101,108, - 101,116,101,115,32,116,104,101,32,95,98,117,105,108,100,32,100,105,114, - 101,99,116,111,114,121,44,32,97,108,108,32,112,114,111,106,101,99,116, - 32,97,110,100,32,112,108,117,103,105,110,32,99,97,99,104,101,115,44,10, - 97,115,32,119,101,108,108,32,97,115,32,116,104,101,32,114,101,98,97, - 114,46,108,111,99,107,32,97,110,100,32,97,110,121,32,99,114,97,115,104, - 100,117,109,112,32,102,105,108,101,115,46,10], - "Execute all clean commands","rebar3 lfe clean-all",[], - [default], - lfe}, - {provider,clean,rebar3_lfe_prv_clean, - {[],[]}, - true, - [{default,clean}], - [10,"Clean apps .ebin files",10,10,84,104,105,115,32,100,101,108,101, - 116,101,115,32,116,104,101,32,99,111,109,112,105,108,101,100,32,46,101, - 98,105,110,32,102,105,108,101,115,32,102,111,114,32,97,32,112,114,111, - 106,101,99,116,39,115,32,97,112,112,115,46,10], - "Clean apps .ebin files","rebar3 lfe clean",[], - [default], - lfe}], - false}], - []}, - {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, - {rebar_state,'-create_logic_providers/2-fun-0-',2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_state.erl"},{line,507}]}, - {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, - {rebar_state,create_logic_providers,2, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_state.erl"},{line,506}]}, - {rebar_plugins,'-handle_plugins/4-fun-0-',5, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_plugins.erl"}, - {line,103}]}, - {lists,foldl,3,[{file,"lists.erl"},{line,1267}]}, - {rebar_plugins,handle_plugins,4, - [{file,"/home/mmin/oss/rebar3/apps/rebar/src/rebar_plugins.erl"}, - {line,101}]}] - -{state_t,"/home/mmin/oss/rebar3/apps/rebar", - {dict,6,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}], - [{plugins,default},{rebar3_lfe,"0.4.8"}], - [{project_plugins,default}]], - [[deps_dir,112,108,117,103,105,110,115]], - [[plugins,{rebar3_lfe,"0.4.8"}],[overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,1,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[],[],[], - [[all_plugin_deps, - "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin", - "/home/mmin/.cache/rebar3/plugins/lfe/ebin", - "/home/mmin/.cache/rebar3/plugins/ltest/ebin", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin"]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,4,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}], - [{plugins,default},{rebar3_lfe,"0.4.8"}], - [{project_plugins,default}]], - [], - [[plugins,{rebar3_lfe,"0.4.8"}]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - undefined,[], - [global], - default,[], - {[],[]}, - undefined,[],[], - [{app_info_t,<<"erlang_color">>, - "/home/mmin/.cache/rebar3/plugins/erlang_color/src/color.app.src", - undefined, - "/home/mmin/.cache/rebar3/plugins/erlang_color/ebin/color.app", - "1.0.0","1.0.0",<<"ltest">>, - [{description,"ANSI colors for your Erlang"}, - {vsn,"1.0.0"}, - {modules,[color]}, - {registered,[]}, - {applications,[kernel,stdlib]}, - {env,[]}, - {pkg_name,erlang_color}, - {maintainers,["Julian Duque","Duncan McGreggor"]}, - {licenses,["MIT"]}, - {links, - [{"GitHub","https://github.com/julianduque/erlang-color"}, - {"Hex","https://hex.pm/packages/erlang_color"}]}], - [kernel,stdlib], - [],[],[], - [default,prod], - {dict,5,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info,{i,"include"}],[overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,6,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info,{i,"include"}],[overrides]], - [],[],[],[],[], - [[{plugins,global}]], - [],[],[],[],[],[]}}}, - 2,"/home/mmin/.cache/rebar3/plugins/erlang_color", - "/home/mmin/.cache/rebar3/plugins/erlang_color", - "/home/mmin/.cache/rebar3/plugins/erlang_color",undefined, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined, - api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"lfe">>, - "/home/mmin/.cache/rebar3/plugins/lfe/src/lfe.app.src",undefined, - "/home/mmin/.cache/rebar3/plugins/lfe/ebin/lfe.app","2.1.2","2.1.2", - <<"rebar3_lfe">>, - [{description,"Lisp Flavored Erlang (LFE)"}, - {vsn,"2.1.2"}, - {modules, - [cl,clj,lfe,lfe_abstract_code,lfe_bits,lfe_codegen,lfe_codelift, - lfe_comp,lfe_docs,lfe_edlin_expand,lfe_env,lfe_eval, - lfe_eval_bits,lfe_gen,lfe_init,lfe_internal,lfe_io, - lfe_io_format,lfe_io_pretty,lfe_io_write,lfe_lib,lfe_lint, - lfe_macro,lfe_macro_export,lfe_macro_include,lfe_macro_record, - lfe_macro_struct,lfe_ms,lfe_parse,lfe_qlc,lfe_scan,lfe_shell, - lfe_shell_docs,lfe_struct,lfe_translate,lfe_types,lfescript, - scm]}, - {registered,[]}, - {applications,[kernel,stdlib,compiler]}, - {maintainers,["Robert Virding"]}, - {licenses,["Apache"]}, - {links, - [{"Github","https://github.com/lfe/lfe"}, - {"Main site","https://lfe.io/"}, - {"Documentation","https://lfe.io/use/#reference"}]}, - {files, - ["README.md","LICENSE","src","c_src","include","bin","rebar.*", - "*akefile","*.escript"]}], - [kernel,stdlib,compiler], - [],[],[], - [default,prod], - {dict,7,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info, - {d,'ERLANG_VERSION',"24.3.4.14"}, - {d,'HAS_MAPS',true}, - {d,'HAS_FULL_KEYS',true}, - {d,'NEW_REC_CORE',true}, - {d,'NEW_RAND',true}, - {d,'NEW_BOOL_GUARD',true}, - {d,'HAS_FLOOR',true}, - {d,'HAS_CEIL',true}, - {d,'NEW_STACKTRACE',true}, - {d,'EEP48',true}], - [profiles, - {test, - [{deps,[proper]}, - {plugins, - [{rebar3_proper, - {git,"https://github.com/ferd/rebar3_proper", - {tag,"0.12.1"}}}]}, - {src_dirs,["src","test"]}]}, - {dialyzer,[]}], - [pre_hooks, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,8,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{deps,default}],[{plugins,default}],[{locks,default}]], - [], - [[erl_opts,debug_info, - {d,'ERLANG_VERSION',"24.3.4.14"}, - {d,'HAS_MAPS',true}, - {d,'HAS_FULL_KEYS',true}, - {d,'NEW_REC_CORE',true}, - {d,'NEW_RAND',true}, - {d,'NEW_BOOL_GUARD',true}, - {d,'HAS_FLOOR',true}, - {d,'HAS_CEIL',true}, - {d,'NEW_STACKTRACE',true}, - {d,'EEP48',true}], - [profiles, - {test, - [{deps,[proper]}, - {plugins, - [{rebar3_proper, - {git,"https://github.com/ferd/rebar3_proper", - {tag,"0.12.1"}}}]}, - {src_dirs,["src","test"]}]}, - {dialyzer,[]}], - [pre_hooks, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",ct, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/test test/*_SUITE.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",eunit, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin test/clj-tests.lfe test/maps-tests.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)",app_compile, - "bin/lfescript bin/lfec -o $REBAR_DEPS_DIR/lfe/ebin src/*.lfe"}], - [overrides]], - [],[],[],[],[], - [[{plugins,global}]], - [],[],[],[],[],[]}}}, - 1,"/home/mmin/.cache/rebar3/plugins/lfe", - "/home/mmin/.cache/rebar3/plugins/lfe", - "/home/mmin/.cache/rebar3/plugins/lfe",undefined, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined, - api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"ltest">>, - "/home/mmin/.cache/rebar3/plugins/ltest/src/ltest.app.src",undefined, - "/home/mmin/.cache/rebar3/plugins/ltest/ebin/ltest.app","0.13.5", - "0.13.5",<<"rebar3_lfe">>, - [{description,"A Testing Framework for LFE"}, - {vsn,"0.13.5"}, - {modules, - ['ltest-color','ltest-const','ltest-formatter', - 'ltest-integration','ltest-listener','ltest-runner', - 'ltest-system','ltest-unit','ltest-util',ltest]}, - {registered,[]}, - {applications,[kernel,stdlib]}, - {included_applications,[]}, - {env,[]}, - {pkg_name,ltest}, - {maintainers,["Duncan McGreggor"]}, - {licenses,["BSD-3"]}, - {links, - [{"GitHub","https://github.com/lfex/ltest"}, - {"Hex","https://hex.pm/packages/ltest"}]}, - {exclude_paths,["priv"]}], - [kernel,stdlib], - [],[], - [<<"erlang_color">>,<<"lfe">>], - [default,prod], - {dict,15,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 0}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}], - [{deps,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.2.6"}]], - [[dialyzer,{warnings,[unknown]}]], - [[erl_first_files,"src/ltest-util.lfe"], - [eunit_opts,verbose], - [eunit_compile_opts,{src_dirs,["src","test"]}], - [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], - [plugins,{rebar_cmd,"0.2.6"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls, - deprecated_functions], - [pre_hooks, - {app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], - [profiles, - {test, - [{eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}, - {pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, - {repl, - [{pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, - {plugins, - [{rebar3_lfe, - {git, - "https://github.com/lfe-rebar3/rebar3_lfe.git", - {branch,"release/0.3.x"}}}]}]}], - [commands, - {ltest,"make check-runner-ltest"}, - {'deps-dir',"echo $REBAR_DEPS_DIR"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,{cmd,"ltest"}]}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,16,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 0}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}], - [{deps,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>,undefined,undefined}}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.2.6"}]], - [[dialyzer,{warnings,[unknown]}]], - [[erl_first_files,"src/ltest-util.lfe"], - [eunit_opts,verbose], - [eunit_compile_opts,{src_dirs,["src","test"]}], - [deps,{lfe,"2.1.2"},{erlang_color,"1.0.0"}], - [plugins,{rebar_cmd,"0.2.6"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls, - deprecated_functions], - [pre_hooks, - {app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}], - [profiles, - {test, - [{eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}, - {pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}]}, - {repl, - [{pre_hooks, - [{"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin src/*.lfe"}, - {"(linux|darwin|solaris|freebsd|netbsd|openbsd)", - app_compile, - "$REBAR_DEPS_DIR/lfe/bin/lfescript $REBAR_DEPS_DIR/lfe/bin/lfec -o $REBAR_DEPS_DIR/ltest/ebin test/*.lfe"}]}, - {plugins, - [{rebar3_lfe, - {git, - "https://github.com/lfe-rebar3/rebar3_lfe.git", - {branch,"release/0.3.x"}}}]}]}], - [commands, - {ltest,"make check-runner-ltest"}, - {'deps-dir',"echo $REBAR_DEPS_DIR"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,{cmd,"ltest"}]}], - [overrides]], - [],[],[],[],[], - [[{plugins,global},{rebar_cmd,"0.2.6"}]], - [],[],[],[],[],[]}}}, - 1,"/home/mmin/.cache/rebar3/plugins/ltest", - "/home/mmin/.cache/rebar3/plugins/ltest", - "/home/mmin/.cache/rebar3/plugins/ltest",undefined, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined, - api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}, - {app_info_t,<<"rebar3_lfe">>, - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/src/rebar3_lfe.app.src", - undefined, - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe/ebin/rebar3_lfe.app", - "0.4.8","0.4.8",root, - [{description, - "A comprehensive LFE rebar3 plugin for all your LFE tooling needs"}, - {vsn,"0.4.8"}, - {registered,[]}, - {applications,[kernel,stdlib,lfe]}, - {env,[]}, - {modules, - [rebar3_lfe,rebar3_lfe_clean,rebar3_lfe_package, - rebar3_lfe_prv_clean,rebar3_lfe_prv_clean_all, - rebar3_lfe_prv_clean_build,rebar3_lfe_prv_clean_cache, - rebar3_lfe_prv_compile,rebar3_lfe_prv_confabulate, - rebar3_lfe_prv_escriptize,rebar3_lfe_prv_ltest, - rebar3_lfe_prv_release,rebar3_lfe_prv_repl,rebar3_lfe_prv_run, - rebar3_lfe_prv_run_escript,rebar3_lfe_prv_run_release, - rebar3_lfe_prv_versions,rebar3_lfe_repl,rebar3_lfe_utils, - rebar3_lfe_version]}, - {pkg_name,rebar3_lfe}, - {licenses,["Apache 2.0"]}, - {links, - [{"GitHub","https://github.com/lfe/rebar3"}, - {"Hex","https://hex.pm/packages/rebar3_lfe"}, - {"LFE","https://github.com/lfe/lfe"}]}, - {exclude_files,["priv/testing/*"]}], - [kernel,stdlib,lfe], - [],[], - [<<"lfe">>,<<"ltest">>], - [default,prod], - {dict,11,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 1}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, - 0}], - [{deps,default}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.4.0"}]], - [], - [[erl_opts,debug_info], - [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], - [plugins,{rebar_cmd,"0.4.0"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls, - deprecated_functions], - [profiles, - {test, - [{deps,[{proper,"1.3.0"}]}, - {plugins,[{rebar3_proper,"0.12.1"}]}, - {eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}]}], - [commands, - {clean_all,"rm -rf _build rebar3.lock"}, - {test_all,"rebar3 as test check"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,coverage]}, - {clean_all,[{cmd,"clean_all"}]}], - [overrides]], - [],[],[],[],[],[],[],[],[],[],[],[]}}}, - {dict,12,16,16,8,80,48, - {[],[],[],[],[],[],[],[],[],[],[],[],[],[],[],[]}, - {{[], - [[{locks,default}, - {<<"erlang_color">>, - {pkg,<<"erlang_color">>,<<"1.0.0">>, - <<"145FE1D2E65C4516E4F03FEFCA6C2F47EBAD5899D978D70382A5CFE643E4AC9E">>, - <<"6B17E5E589C8FEF540574C9EA32B67CEC2C8A44283AAFE474D6E5818FB3EE038">>}, - 1}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"lfe">>, - {pkg,<<"lfe">>,<<"2.1.2">>, - <<"9A14B5056761C63EEA5A3040E0FD1A326276CFE40F3B952E7305FED45341BF6F">>, - <<"E717466A203711FDF47A2E2144990EDB52B207D40F6D6168BADD05F76EEC04AD">>}, - 0}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>, - <<"BE2F9322D570554B4FC2C268E07797349AA7B160479004AF1128E526682476A7">>, - <<"26E435CD98C981C232477E188CCE78F5CB2A58094C631794A99582C85BBCF028">>}, - 0}], - [{deps,default}, - {<<"lfe">>,{pkg,<<"lfe">>,<<"2.1.2">>,undefined,undefined}}, - {<<"ltest">>, - {pkg,<<"ltest">>,<<"0.13.5">>,undefined,undefined}}], - [{plugins,default},{rebar_cmd,"0.4.0"}]], - [], - [[erl_opts,debug_info], - [deps,{lfe,"2.1.2"},{ltest,"0.13.5"}], - [plugins,{rebar_cmd,"0.4.0"}], - [xref_checks,undefined_function_calls,undefined_functions, - locals_not_used,deprecated_function_calls, - deprecated_functions], - [profiles, - {test, - [{deps,[{proper,"1.3.0"}]}, - {plugins,[{rebar3_proper,"0.12.1"}]}, - {eunit_opts,[verbose]}, - {erl_opts,[{src_dirs,["src","test"]}]}]}], - [commands, - {clean_all,"rm -rf _build rebar3.lock"}, - {test_all,"rebar3 as test check"}], - [alias, - {coverage,[{proper,"-c"},{cover,"-v --min_coverage=0"}]}, - {check,[compile,eunit,coverage]}, - {clean_all,[{cmd,"clean_all"}]}], - [overrides]], - [],[],[],[],[], - [[{plugins,global},{rebar_cmd,"0.4.0"}]], - [],[],[],[],[],[]}}}, - 0,"/home/mmin/.cache/rebar3/plugins/rebar3_lfe", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe", - "/home/mmin/.cache/rebar3/plugins/rebar3_lfe",undefined, - {pkg,<<"rebar3_lfe">>,<<"0.4.8">>, - <<"70AD90549580C5384ABFF1677B8FE874C9EEFD15FF93BF875C86D5115CBDBEBD">>, - <<"09F3E90AA6A4A7B706E64C314AB670F5C37AC77EBDC119CFB6398AA9F165EE1B">>, - #{api_key => undefined,api_organization => undefined, - api_repository => undefined, - api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}}, - false,false,true,undefined,true}], - [], - [rebar_compiler_xrl,rebar_compiler_yrl,rebar_compiler_mib, - rebar_compiler_erl], - [], - [{resource,hg,rebar_hg_resource,#{},rebar_resource_v2}, - {resource,pkg,rebar_pkg_resource, - #{base_config => - #{http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>}, - repos => - [#{api_key => undefined,api_organization => undefined, - api_repository => undefined, - api_url => <<"https://hex.pm/api">>, - http_adapter => {rebar_httpc_adapter,#{profile => rebar}}, - http_etag => undefined,http_headers => #{}, - http_user_agent_fragment => - <<"(rebar3/0.0.0+build.5339.ref45769cfd) (httpc)">>, - name => <<"hexpm">>,repo_key => undefined, - repo_name => <<"hexpm">>,repo_organization => undefined, - repo_public_key => - <<"-----BEGIN PUBLIC KEY-----\nMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEApqREcFDt5vV21JVe2QNB\nEdvzk6w36aNFhVGWN5toNJRjRJ6m4hIuG4KaXtDWVLjnvct6MYMfqhC79HAGwyF+\nIqR6Q6a5bbFSsImgBJwz1oadoVKD6ZNetAuCIK84cjMrEFRkELtEIPNHblCzUkkM\n3rS9+DPlnfG8hBvGi6tvQIuZmXGCxF/73hU0/MyGhbmEjIKRtG6b0sJYKelRLTPW\nXgK7s5pESgiwf2YC/2MGDXjAJfpfCd0RpLdvd4eRiXtVlE9qO9bND94E7PgQ/xqZ\nJ1i2xWFndWa6nfFnRxZmCStCOZWYYPlaxr+FZceFbpMwzTNs4g3d4tLNUcbKAIH4\n0wIDAQAB\n-----END PUBLIC KEY-----">>, - repo_url => <<"https://repo.hex.pm">>,repo_verify => true, - repo_verify_origin => true,tarball_max_size => 8388608, - tarball_max_uncompressed_size => 67108864}]}, - rebar_resource_v2}, - {resource,git_subdir,rebar_git_subdir_resource,#{},rebar_resource_v2}, - {resource,git,rebar_git_resource,#{},rebar_resource_v2}], - [],false} \ No newline at end of file diff --git a/apps/rebar/src/rebar_completion_zsh.erl b/apps/rebar/src/rebar_completion_zsh.erl new file mode 100644 index 000000000..d28dce941 --- /dev/null +++ b/apps/rebar/src/rebar_completion_zsh.erl @@ -0,0 +1,119 @@ +%% @doc Completion file generator for zsh +%% @end +-module(rebar_completion_zsh). + +-behavior(rebar_completion). + +-export([generate/2]). + +-spec generate([rebar_completion:cmpl_cmd()], rebar_completion:cmpl_opts()) -> iolist(). +generate(Commands, #{shell:=zsh}=CmplOpts) -> + ["#compdef _rebar3 rebar3\n", + rebar_completion:prelude(CmplOpts), + io_lib:nl(), + main(Commands, CmplOpts), + io_lib:nl()]. + +main(Commands, CmplOpts) -> + H = #{short=>$s, + long=>"help", + help=>"rebar3 help", + type=>boolean}, + V = #{short=>$v, + long=>"version", + help=>"Version of rebar3", + type=>boolean}, + Rebar = #{name=>"rebar3", + cmds=>Commands, + args=>[H,V], + help=>"Erlang build tool"}, + cmd_to_fun(Rebar, [], CmplOpts). + +cmd_to_fun(#{name:=Name,cmds:=Nested}=Cmd, Prev, CmplOpts) -> + ["function "++function_name(Prev, Name)++" {\n", + " local -a commands\n", + io_lib:nl(), + args(Cmd, CmplOpts), + io_lib:nl(), + nested_cmds(Nested,[Name|Prev],CmplOpts), + "}\n", + io_lib:nl(), + [cmd_to_fun(C, [Name|Prev], CmplOpts) || C <- Nested]]. + +function_name(Prev,Name) -> + ["_", + string:join( + lists:reverse([Name | Prev]), + "_")]. + +nested_cmds([],_,_) -> + io_lib:nl(); +nested_cmds(Cmds,Prev,CmplOpts) -> + [" case $state in\n", + " cmnds)\n", + " commands=(\n", + [[" ",cmd_str(Cmd, CmplOpts),io_lib:nl()] || Cmd <- Cmds], + " )\n", + " _describe \"command\" commands\n", + " ;;\n", + " esac\n", + "\n", + " case \"$words[1]\" in\n", + [cmd_call_case(Cmd, Prev, CmplOpts) || Cmd <- Cmds], + " esac\n"]. + +cmd_str(#{name:=N,help:=H}, _CmplOpts) -> + ["\"",N,":",help(H),"\""]. + +cmd_call_case(#{name:=Name}, Prev, _CmplOpts) -> + [" ",Name,")\n", + " ",function_name(Prev, Name),"\n", + " ;;\n"]. + +args(#{args:=Args,cmds:=Cmds}, _CmplOpts) -> + NoMore = (Args=:=[]) and (Cmds=:=[]), + case NoMore of + true -> + " _message 'no more arguments'\n"; + false -> + [" _arguments \\\n", + [arg_str(Arg) || Arg <- Args], + case Cmds of + [] -> + ""; + _ -> + [" \"1: :->cmnds\" \\\n", + " \"*::arg:->args\"\n"] + end] + end. + +arg_str(#{short:=undefined,long:=undefined,help:=H}) -> + [" ","'1:",H,":' \\\n"]; +arg_str(#{help:=H}=Arg) -> + [" ",spec(Arg),"[",help(H),"]' \\\n"]. + +spec(#{short:=undefined,long:=L}) -> + ["'(--",L,")--",L,""]; +spec(#{short:=S,long:=undefined}) -> + ["'(-",[S],")-",[S],""]; +spec(#{short:=S,long:=L}) -> + ["'(-",[S]," --",L,")'{-",[S],",--",L,"}'"]. + +help(undefined) -> ""; +help(H) -> help_escape(H). + +help_escape([]) -> + []; +help_escape([40 | Rest]) -> + ["\\(",help_escape(Rest)]; +help_escape([41 | Rest]) -> + ["\\)",help_escape(Rest)]; +help_escape([91| Rest]) -> + ["\\[",help_escape(Rest)]; +help_escape([93| Rest]) -> + ["\\]",help_escape(Rest)]; +%% escaping single quotes by doubling them +help_escape([$' | Rest]) -> + ["''",help_escape(Rest)]; +help_escape([C | Rest]) -> + [C | help_escape(Rest)]. diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl index 9e8da4c62..f5b0b3ca2 100644 --- a/apps/rebar/src/rebar_prv_completion.erl +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -51,7 +51,7 @@ do(State) -> Conf = maps:from_list(rebar_state:get(State, completion, [])), %% Opts passed in CLI override config CmplOpts0 = maps:merge(DefaultOpts, Conf), - CmplOpts = maps:merge(CmplOpts0, CliOpts), + CmplOpts = check_opts(maps:merge(CmplOpts0, CliOpts)), Providers0 = rebar_state:providers(State), BareProviders = lists:filter(fun(P) -> provider_get(P, bare) end, Providers0), @@ -69,6 +69,12 @@ do(State) -> write_completion(Compl,State,CmplOpts), {ok, State}. +check_opts(#{shell:=zsh, aliases:=As}=Opts) when As=/=[] -> + ?WARN("OS aliases are not supported for `zsh`, they must be added automatically.", []), + Opts; +check_opts(Opts) -> + Opts. + detect_shell() -> case os:getenv("SHELL") of false -> diff --git a/apps/rebar/test/rebar_completion_SUITE.erl b/apps/rebar/test/rebar_completion_SUITE.erl index 53e25490b..24ab64751 100644 --- a/apps/rebar/test/rebar_completion_SUITE.erl +++ b/apps/rebar/test/rebar_completion_SUITE.erl @@ -9,13 +9,13 @@ suite() -> []. all() -> - [test_competion_gen, check_bash]. + [test_competion_gen, check_bash, check_zsh]. groups() -> []. init_per_suite(Config) -> - Shells = [bash], + Shells = [bash, zsh], ComplFile = compl_file(Config), ok = filelib:ensure_dir(ComplFile), [{compl_file, ComplFile}, {shells, Shells} | Config]. @@ -30,6 +30,13 @@ init_per_testcase(check_bash, Config) -> false -> {skip, "bash not found"} end; +init_per_testcase(check_zsh, Config) -> + case shell_available(zsh) of + true -> + rebar_test_utils:init_rebar_state(Config, "completion_"); + false -> + {skip, "zsh not found"} + end; init_per_testcase(_, Config) -> rebar_test_utils:init_rebar_state(Config, "completion_"). @@ -68,6 +75,18 @@ check_bash(Config) -> end, ["rebar3" | Aliases]). +check_zsh(Config) -> + ComplFile = ?config(compl_file, Config), + Opts = #{shell => zsh, + file => ComplFile, + aliases => []}, + completion_gen(Config, Opts), + {ok, Completion} = file:read_file(ComplFile), + %% function definition + {match, _} = re:run(Completion, "function _rebar3 {"), + CompleteCmd = "#compdef _rebar3 ", + ?assertMatch({match, _}, re:run(Completion, CompleteCmd++"rebar3"++"\n")). + %% helpers completion_gen(Config, CmplOpts) -> From 4ad437aa12c70603a3f32fcb474fcea1bd726186 Mon Sep 17 00:00:00 2001 From: Marko Mindek Date: Tue, 5 Mar 2024 20:13:15 +0100 Subject: [PATCH 6/6] typo and dialyzer fix --- apps/rebar/src/rebar_completion.erl | 2 +- apps/rebar/src/rebar_prv_completion.erl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/rebar/src/rebar_completion.erl b/apps/rebar/src/rebar_completion.erl index 2c5f88c99..e55fc8a8c 100644 --- a/apps/rebar/src/rebar_completion.erl +++ b/apps/rebar/src/rebar_completion.erl @@ -24,7 +24,7 @@ -callback generate([cmpl_cmd()], cmpl_opts()) -> iolist(). --spec generate([cmpl_cmd()], cmpl_opts()) -> string(). +-spec generate([cmpl_cmd()], cmpl_opts()) -> iolist(). generate(Commands, #{shell:=bash}=CmplOpts) -> rebar_completion_bash:generate(Commands,CmplOpts); generate(Commands, #{shell:=zsh}=CmplOpts) -> diff --git a/apps/rebar/src/rebar_prv_completion.erl b/apps/rebar/src/rebar_prv_completion.erl index f5b0b3ca2..9a8faa119 100644 --- a/apps/rebar/src/rebar_prv_completion.erl +++ b/apps/rebar/src/rebar_prv_completion.erl @@ -70,7 +70,7 @@ do(State) -> {ok, State}. check_opts(#{shell:=zsh, aliases:=As}=Opts) when As=/=[] -> - ?WARN("OS aliases are not supported for `zsh`, they must be added automatically.", []), + ?WARN("OS aliases are not supported for `zsh`, they must be added manually.", []), Opts; check_opts(Opts) -> Opts.