mirror of
https://github.com/correl/rebar.git
synced 2024-11-23 19:19:54 +00:00
Adding more flexible arch check; adding sh command
This commit is contained in:
parent
cf6738928d
commit
dbd576fc33
1 changed files with 41 additions and 1 deletions
|
@ -25,8 +25,12 @@
|
|||
-module(rebar_utils).
|
||||
|
||||
-export([get_cwd/0,
|
||||
get_os/0]).
|
||||
is_arch/1,
|
||||
get_os/0,
|
||||
sh/2,
|
||||
sh_failfast/2]).
|
||||
|
||||
-include("rebar.hrl").
|
||||
|
||||
%% ====================================================================
|
||||
%% Public API
|
||||
|
@ -37,6 +41,15 @@ get_cwd() ->
|
|||
Dir.
|
||||
|
||||
|
||||
is_arch(ArchRegex) ->
|
||||
Arch = erlang:system_info(system_architecture),
|
||||
case re:run(Arch, ArchRegex, [{capture, none}]) of
|
||||
match ->
|
||||
true;
|
||||
nomatch ->
|
||||
false
|
||||
end.
|
||||
|
||||
get_os() ->
|
||||
Arch = erlang:system_info(system_architecture),
|
||||
case match_first([{"linux", linux}, {"darwin", darwin}], Arch) of
|
||||
|
@ -47,6 +60,22 @@ get_os() ->
|
|||
end.
|
||||
|
||||
|
||||
sh(Command, Env) ->
|
||||
?INFO("sh: ~s\n~p\n", [Command, Env]),
|
||||
Port = open_port({spawn, Command}, [{env, Env}, exit_status, {line, 16384},
|
||||
use_stdio, stderr_to_stdout]),
|
||||
sh_loop(Port).
|
||||
|
||||
sh_failfast(Command, Env) ->
|
||||
case sh(Command, Env) of
|
||||
ok ->
|
||||
ok;
|
||||
{error, Rc} ->
|
||||
?ERROR("~s failed with error: ~w\n", [Command, Rc]),
|
||||
?FAIL
|
||||
end.
|
||||
|
||||
|
||||
%% ====================================================================
|
||||
%% Internal functions
|
||||
%% ====================================================================
|
||||
|
@ -60,3 +89,14 @@ match_first([{Regex, MatchValue} | Rest], Val) ->
|
|||
nomatch ->
|
||||
match_first(Rest, Val)
|
||||
end.
|
||||
|
||||
sh_loop(Port) ->
|
||||
receive
|
||||
{Port, {data, {_, Line}}} ->
|
||||
?INFO("> ~s\n", [Line]),
|
||||
sh_loop(Port);
|
||||
{Port, {exit_status, 0}} ->
|
||||
ok;
|
||||
{Port, {exit_status, Rc}} ->
|
||||
{error, Rc}
|
||||
end.
|
||||
|
|
Loading…
Reference in a new issue