From b5b6cf855b3bceaac76ccd330d64cfeb2b1f4c14 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 28 Dec 2012 10:21:37 -0500 Subject: make directory checking more robust --- src/rcl_prv_overlay.erl | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) (limited to 'src/rcl_prv_overlay.erl') diff --git a/src/rcl_prv_overlay.erl b/src/rcl_prv_overlay.erl index 160629b..9670138 100644 --- a/src/rcl_prv_overlay.erl +++ b/src/rcl_prv_overlay.erl @@ -289,11 +289,11 @@ do_individual_overlay(State, OverlayVars, {template, From, To}) -> copy_to(State, FromFile0, ToFile0) -> ToFile1 = absolutize(State, ToFile0), FromFile1 = absolutize(State, FromFile0), - ToFile2 = case re:run(ToFile0, ?DIRECTORY_RE) of - nomatch -> + ToFile2 = case is_directory(ToFile0, ToFile1) of + false -> filelib:ensure_dir(ToFile1), ToFile1; - _ -> + true -> rcl_util:mkdir_p(ToFile1), erlang:iolist_to_binary(filename:join(ToFile1, filename:basename(FromFile1))) @@ -307,6 +307,16 @@ copy_to(State, FromFile0, ToFile0) -> ToFile1, Err}) end. +-spec is_directory(file:name(), file:name()) -> boolean(). +is_directory(ToFile0, ToFile1) -> + case re:run(ToFile0, ?DIRECTORY_RE) of + nomatch -> + filelib:is_dir(ToFile1); + _ -> + true + end. + + -spec render_template(proplists:proplist(), iolist()) -> ok | relcool:error(). render_template(OverlayVars, Data) -> -- cgit v1.2.3