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).
|
-module(rebar_utils).
|
||||||
|
|
||||||
-export([get_cwd/0,
|
-export([get_cwd/0,
|
||||||
get_os/0]).
|
is_arch/1,
|
||||||
|
get_os/0,
|
||||||
|
sh/2,
|
||||||
|
sh_failfast/2]).
|
||||||
|
|
||||||
|
-include("rebar.hrl").
|
||||||
|
|
||||||
%% ====================================================================
|
%% ====================================================================
|
||||||
%% Public API
|
%% Public API
|
||||||
|
@ -37,6 +41,15 @@ get_cwd() ->
|
||||||
Dir.
|
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() ->
|
get_os() ->
|
||||||
Arch = erlang:system_info(system_architecture),
|
Arch = erlang:system_info(system_architecture),
|
||||||
case match_first([{"linux", linux}, {"darwin", darwin}], Arch) of
|
case match_first([{"linux", linux}, {"darwin", darwin}], Arch) of
|
||||||
|
@ -47,6 +60,22 @@ get_os() ->
|
||||||
end.
|
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
|
%% Internal functions
|
||||||
%% ====================================================================
|
%% ====================================================================
|
||||||
|
@ -60,3 +89,14 @@ match_first([{Regex, MatchValue} | Rest], Val) ->
|
||||||
nomatch ->
|
nomatch ->
|
||||||
match_first(Rest, Val)
|
match_first(Rest, Val)
|
||||||
end.
|
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