summaryrefslogtreecommitdiff
path: root/src/rebar_utils.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rebar_utils.erl')
-rw-r--r--src/rebar_utils.erl18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/rebar_utils.erl b/src/rebar_utils.erl
index c39bbfa..6dfbbed 100644
--- a/src/rebar_utils.erl
+++ b/src/rebar_utils.erl
@@ -39,6 +39,8 @@
find_files/3,
ensure_dir/1,
beam_to_mod/1,
+ beam_to_mod/2,
+ erl_to_mod/1,
beams/1,
find_executable/1,
expand_code_path/0,
@@ -356,6 +358,9 @@ expand_sh_flag(return_on_error) ->
fun(_Command, Err) ->
{error, Err}
end};
+expand_sh_flag(abort_on_error) ->
+ {error_handler,
+ fun log_and_abort/2};
expand_sh_flag({abort_on_error, Message}) ->
{error_handler,
log_msg_and_abort(Message)};
@@ -385,6 +390,12 @@ log_msg_and_abort(Message) ->
?ABORT(Message, [])
end.
+-spec log_and_abort(string(), {integer(), string()}) -> no_return().
+log_and_abort(Command, {Rc, Output}) ->
+ ?ABORT("sh(~s)~n"
+ "failed with return code ~w and the following output:~n"
+ "~s~n", [Command, Rc, Output]).
+
-spec debug_and_abort(string(), {integer(), string()}) -> no_return().
debug_and_abort(Command, {Rc, Output}) ->
?DEBUG("sh(~s)~n"
@@ -404,9 +415,16 @@ sh_loop(Port, Fun, Acc) ->
{error, {Rc, lists:flatten(lists:reverse(Acc))}}
end.
+beam_to_mod(Dir, Filename) ->
+ [Dir | Rest] = filename:split(Filename),
+ list_to_atom(filename:basename(string:join(Rest, "."), ".beam")).
+
beam_to_mod(Filename) ->
list_to_atom(filename:basename(Filename, ".beam")).
+erl_to_mod(Filename) ->
+ list_to_atom(filename:rootname(filename:basename(Filename))).
+
beams(Dir) ->
filelib:fold_files(Dir, ".*\.beam\$", true,
fun(F, Acc) -> [F | Acc] end, []).