1
0
mirror of https://github.com/sasjs/core.git synced 2026-01-04 16:10:06 +00:00

fix: ensuring mp_hashdirectory will output an empty dataset when the target directory does not exist. Updated tests and documentation also

This commit is contained in:
Allan Bowe
2022-10-27 20:38:41 +00:00
parent 5b251006cd
commit ef574f6319
5 changed files with 141 additions and 11 deletions

View File

@@ -101,8 +101,7 @@ data &out_ds(compress=no
if did=0 then do;
putlog "NOTE: This directory is empty, or does not exist - &path";
msg=sysmsg();
put msg;
put _all_;
put (_all_)(=);
stop;
end;
/* attribute is OS-dependent - could be "Directory" or "Directory Name" */

View File

@@ -5,7 +5,7 @@
create a hash for each directory also.
This makes use of the new `hashing_file()` and `hashing` functions, available
since 9.4m6. Interestingly, these can even be used in pure macro, eg:
since 9.4m6. Interestingly, those functions can be used in pure macro, eg:
%put %sysfunc(hashing_file(md5,/path/to/file.blob,0));
@@ -30,8 +30,9 @@
@li If a folder contains other folders, start from the bottom of the tree -
the folder hashes cascade upwards so you know immediately if there is a
change in a sub/sub directory
@li If the folder has no content (empty) then it is ignored. No hash created.
@li If a subfolder has no content (empty) then it is ignored. No hash created.
@li If the file is empty, it is also ignored / no hash created.
@li If the target directory (&inloc) is empty, &outds will also be empty
<h4> SAS Macros </h4>
@li mp_dirlist.sas
@@ -72,7 +73,7 @@
iftrue=%str(1=1)
)/*/STORE SOURCE*/;
%local curlevel tempds ;
%local curlevel tempds maxlevel;
%if not(%eval(%unquote(&iftrue))) %then %return;
@@ -108,6 +109,7 @@ proc sort data=&outds ;
by descending level directory file_path;
run;
%let maxlevel=0;
data _null_;
set &outds;
call symputx('maxlevel',level,'l');