aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitignore3
-rw-r--r--src/rcl_prv_assembler.erl5
-rw-r--r--src/rcl_prv_discover.erl18
-rw-r--r--src/rcl_state.erl2
4 files changed, 17 insertions, 11 deletions
diff --git a/.gitignore b/.gitignore
index ed62865..235c370 100644
--- a/.gitignore
+++ b/.gitignore
@@ -7,4 +7,5 @@ relcool
# This is a generated file that should be ignored
src/rcl_goal.erl
logs
-test/*_data \ No newline at end of file
+test/*_data
+relcool_output/* \ No newline at end of file
diff --git a/src/rcl_prv_assembler.erl b/src/rcl_prv_assembler.erl
index 8143c97..d3fe4ad 100644
--- a/src/rcl_prv_assembler.erl
+++ b/src/rcl_prv_assembler.erl
@@ -119,11 +119,10 @@ copy_dir(AppDir, TargetDir, SubDir) ->
true ->
case filelib:is_dir(SubTarget) of
true ->
- ec_file:remove(SubTarget, [recursive]);
+ ok = ec_file:remove(SubTarget, [recursive]);
false ->
ok
end,
- ok = ec_file:mkdir_p(SubTarget),
case ec_file:copy(SubSource, SubTarget, [recursive]) of
{error, E} ->
?RCL_ERROR({ec_file_error, AppDir, TargetDir, E});
@@ -134,8 +133,6 @@ copy_dir(AppDir, TargetDir, SubDir) ->
ok
end.
-
-
create_release_info(State, Release, OutputDir) ->
RelName = erlang:atom_to_list(rcl_release:name(Release)),
ReleaseDir = filename:join([OutputDir,
diff --git a/src/rcl_prv_discover.erl b/src/rcl_prv_discover.erl
index a7d7e1e..ab4011c 100644
--- a/src/rcl_prv_discover.erl
+++ b/src/rcl_prv_discover.erl
@@ -42,6 +42,7 @@ init(State) ->
%% looking for OTP Applications
-spec do(rcl_state:t()) -> {ok, rcl_state:t()} | relcool:error().
do(State) ->
+ OutputDir = rcl_state:output_dir(State),
LibDirs = get_lib_dirs(State),
rcl_log:info(rcl_state:log(State),
fun() ->
@@ -49,7 +50,10 @@ do(State) ->
[[rcl_util:indent(1), LibDir, "\n"] || LibDir <- LibDirs]]
end),
- AppMeta0 = lists:flatten(ec_plists:map(fun discover_dir/1, LibDirs)),
+ AppMeta0 = lists:flatten(ec_plists:map(fun(LibDir) ->
+ discover_dir([OutputDir],
+ LibDir)
+ end, LibDirs)),
Errors = [case El of
{error, Ret} -> Ret;
_ -> El
@@ -148,17 +152,21 @@ format_detail({unversioned_app, AppDir, _AppName}) ->
format_detail({app_info_error, Detail}) ->
rcl_app_info:format_error(Detail).
--spec discover_dir(file:name()) ->
+-spec discover_dir([file:name()],
+ file:name()) ->
[rcl_app_info:t() | {error, Reason::term()}] |
rcl_app_info:t() | {error, Reason::term()}.
-discover_dir(File) ->
- case filelib:is_dir(File) of
+discover_dir(IgnoreDirs, File) ->
+ case (not lists:member(File, IgnoreDirs))
+ andalso filelib:is_dir(File) of
true ->
case file:list_dir(File) of
{error, Reason} ->
{error, {accessing, File, Reason}};
{ok, List} ->
- ec_plists:map(fun discover_dir/1, [filename:join([File, Dir]) || Dir <- List])
+ ec_plists:map(fun(LibDir) ->
+ discover_dir(IgnoreDirs, LibDir)
+ end, [filename:join([File, Dir]) || Dir <- List])
end;
false ->
is_valid_otp_app(File)
diff --git a/src/rcl_state.erl b/src/rcl_state.erl
index 2d27de2..23c7e74 100644
--- a/src/rcl_state.erl
+++ b/src/rcl_state.erl
@@ -89,7 +89,7 @@
new(PropList, Targets) when erlang:is_list(PropList) ->
State0 =
#state_t{log = proplists:get_value(log, PropList, rcl_log:new(error)),
- output_dir=proplists:get_value(output_dir, PropList, ""),
+ output_dir=filename:absname(proplists:get_value(output_dir, PropList, "")),
lib_dirs=get_lib_dirs(proplists:get_value(lib_dirs, PropList, [])),
config_files=Targets,
goals=proplists:get_value(goals, PropList, []),