diff options
| -rw-r--r-- | src/rebar_file_utils.erl | 19 | 
1 files changed, 19 insertions, 0 deletions
| diff --git a/src/rebar_file_utils.erl b/src/rebar_file_utils.erl index e3e7858..2a782f0 100644 --- a/src/rebar_file_utils.erl +++ b/src/rebar_file_utils.erl @@ -150,6 +150,25 @@ cp_r_win32({false, Source},{false, Dest}) ->      %% from file to file      {ok,_} = file:copy(Source, Dest),      ok; +cp_r_win32({true, SourceDir}, {false, DestDir}) -> +    case filelib:is_regular(DestDir) of +        true -> +            %% From directory to file? This shouldn't happen +            {error, lists:flatten( +                      io_lib:format("Cannot copy dir (~p) to file (~p)\n", +                                    [SourceDir, DestDir]))}; +        false -> +            %% Specifying a target directory that doesn't currently exist. +            %% So let's attempt to create this directory +            case filelib:ensure_dir(filename:join(DestDir, "dummy")) of +                ok -> +                    ok = xcopy_win32(SourceDir, DestDir); +                {error, Reason} -> +                    {error, lists:flatten( +                              io_lib:format("Unable to create dir ~p: ~p\n", +                                            [DestDir, Reason]))} +            end +    end;  cp_r_win32(Source,Dest) ->      Dst = {filelib:is_dir(Dest), Dest},      lists:foreach(fun(Src) -> | 
