diff options
-rw-r--r-- | src/rebar_prv_deps_tree.erl | 26 |
1 files changed, 16 insertions, 10 deletions
diff --git a/src/rebar_prv_deps_tree.erl b/src/rebar_prv_deps_tree.erl index d429c52..301b6be 100644 --- a/src/rebar_prv_deps_tree.erl +++ b/src/rebar_prv_deps_tree.erl @@ -49,26 +49,32 @@ print_deps_tree(SrcDeps, Verbose, State) -> ProjectAppNames = [{rebar_app_info:name(App) ,rebar_app_info:original_vsn(App) ,project} || App <- rebar_state:project_apps(State)], + io:setopts([{encoding, unicode}]), case dict:find(root, D) of {ok, Children} -> - print_children(-1, lists:keysort(1, Children++ProjectAppNames), D, Verbose); + print_children("", lists:keysort(1, Children++ProjectAppNames), D, Verbose); error -> - print_children(-1, lists:keysort(1, ProjectAppNames), D, Verbose) + print_children("", lists:keysort(1, ProjectAppNames), D, Verbose) end. print_children(_, [], _, _) -> ok; -print_children(Indent, [{Name, Vsn, Source} | Rest], Dict, Verbose) -> - - [io:format("| ") || _ <- lists:seq(0, Indent, 2)], - io:format("|- "), - io:format("~s-~s (~s)~n", [Name, Vsn, type(Source, Verbose)]), +print_children(Prefix, [{Name, Vsn, Source} | Rest], Dict, Verbose) -> + Prefix1 = case Rest of + [] -> + io:format("~s└─ ", [Prefix]), + [Prefix, " "]; + _ -> + io:format("~s├─ ", [Prefix]), + [Prefix, "│ "] + end, + io:format("~s─~s (~s)~n", [Name, Vsn, type(Source, Verbose)]), case dict:find(Name, Dict) of {ok, Children} -> - print_children(Indent+2, lists:keysort(1, Children), Dict, Verbose), - print_children(Indent, Rest, Dict, Verbose); + print_children(Prefix1, lists:keysort(1, Children), Dict, Verbose), + print_children(Prefix, Rest, Dict, Verbose); error -> - print_children(Indent, Rest, Dict, Verbose) + print_children(Prefix, Rest, Dict, Verbose) end. type(project, _) -> |