@ -262,9 +262,11 @@ path_from_ancestor_(_, _) -> {error, badparent}.
% % reduce a filepath by removing all incidences of ` . ' and `..'
% % reduce a filepath by removing all incidences of ` . ' and `..'
- spec canonical_path ( string ( ) ) - > string ( ) .
- spec canonical_path ( string ( ) ) - > string ( ) .
canonical_path ( Dir ) - > canonical_path ( [ ] , filename : split ( filename : absname ( Dir ) ) ) .
canonical_path ( Dir ) - >
Canon = canonical_path ( [ ] , filename : split ( filename : absname ( Dir ) ) ) ,
filename : nativename ( Canon ) .
canonical_path ( [ ] , [ ] ) - > filename : nativename ( " / " ) ;
canonical_path ( [ ] , [ ] ) - > filename : abs name( " / " ) ;
canonical_path ( Acc , [ ] ) - > filename : join ( lists : reverse ( Acc ) ) ;
canonical_path ( Acc , [ ] ) - > filename : join ( lists : reverse ( Acc ) ) ;
canonical_path ( Acc , [ " . " | Rest ] ) - > canonical_path ( Acc , Rest ) ;
canonical_path ( Acc , [ " . " | Rest ] ) - > canonical_path ( Acc , Rest ) ;
canonical_path ( [ _ | Acc ] , [ " .. " | Rest ] ) - > canonical_path ( Acc , Rest ) ;
canonical_path ( [ _ | Acc ] , [ " .. " | Rest ] ) - > canonical_path ( Acc , Rest ) ;
@ -283,13 +285,19 @@ delete_each_dir_win32([Dir | Rest]) ->
delete_each_dir_win32 ( Rest ) .
delete_each_dir_win32 ( Rest ) .
xcopy_win32 ( Source , Dest ) - >
xcopy_win32 ( Source , Dest ) - >
% % " xcopy \" ~s \" \" ~s \" /q /y /e 2> nul " , Chane gd to robocopy to
% % " xcopy \" ~s \" \" ~s \" /q /y /e 2> nul " , Change d to robocopy to
% % handle long names . May have issues with older windows .
% % handle long names . May have issues with older windows .
Cmd = case filelib : is_dir ( Source ) of
Cmd = case filelib : is_dir ( Source ) of
true - >
true - >
% % For robocopy , copying / a / b / c / to / d / e / f / recursively does not
% % create / d / e / f / c / * , but rather copies all files to / d / e / f / * .
% % The usage we make here expects the former , not the later , so we
% % must manually add the last fragment of a directory to the ` Dest `
% % in order to properly replicate POSIX platforms
NewDest = filename : join ( [ Dest , filename : basename ( Source ) ] ) ,
? FMT ( " robocopy \" ~s \" \" ~s \" /e /is 1> nul " ,
? FMT ( " robocopy \" ~s \" \" ~s \" /e /is 1> nul " ,
[ rebar_utils : escape_double_quotes ( filename : nativename ( Source ) ) ,
[ rebar_utils : escape_double_quotes ( filename : nativename ( Source ) ) ,
rebar_utils : escape_double_quotes ( filename : nativename ( Dest ) ) ] ) ;
rebar_utils : escape_double_quotes ( filename : nativename ( New Dest) ) ] ) ;
false - >
false - >
? FMT ( " robocopy \" ~s \" \" ~s \" \" ~s \" /e /is 1> nul " ,
? FMT ( " robocopy \" ~s \" \" ~s \" \" ~s \" /e /is 1> nul " ,
[ rebar_utils : escape_double_quotes ( filename : nativename ( filename : dirname ( Source ) ) ) ,
[ rebar_utils : escape_double_quotes ( filename : nativename ( filename : dirname ( Source ) ) ) ,