From 198ef4e506d7c52028d70a4119e57a65b867e23b Mon Sep 17 00:00:00 2001
From: Jan Lemmer <jan.lemmer@fst.tu-darmstadt.de>
Date: Tue, 27 Jul 2021 09:45:05 +0200
Subject: [PATCH] Close Bug that multiple files were overwritten,

Add the export of User FCNs (Relates #11)
---
 example.m          |   4 ++--
 fcn_core/Publish.m |  38 ++++++++++++++++++++++----------------
 test_data.mat      | Bin 1528 -> 1523 bytes
 testdata_2.h5      | Bin 3064 -> 3064 bytes
 4 files changed, 24 insertions(+), 18 deletions(-)

diff --git a/example.m b/example.m
index 45c7e39..b160cbf 100644
--- a/example.m
+++ b/example.m
@@ -45,8 +45,8 @@ set(gca, 'TickDir', 'out', 'YLim', [0,4]);
 [figs, ID] = TagPlot(fig, ProjectID);
 
 %% call dummy function
-% a=1;
-% a = test_2(a);
+a=1;
+a = test_2(a);
 
 %% publishing
 
diff --git a/fcn_core/Publish.m b/fcn_core/Publish.m
index cd00f62..5e941ce 100644
--- a/fcn_core/Publish.m
+++ b/fcn_core/Publish.m
@@ -38,8 +38,12 @@ createFileCopy({[DataPaths.script,'.m']},folderName,storPath,ID, 'script');
 
 if options.CopyUserFCN
    [fList,pList] = matlab.codetools.requiredFilesAndProducts(DataPaths.script);
+   % plist contains the required MATLAB Toolboxes, maybe usefull in future
    fList = fList(~ismember(fList,[DataPaths.script,'.m'])); % rmv script from list
    fList = removePltIdFiles(fList); % Do not copy files that are part of plot ID
+   if ~isempty(fList)
+       createFileCopy(fList,folderName,storPath,ID,'userFcn');
+   end
 end
 
 %% Research data handeling
@@ -85,26 +89,28 @@ function [] = createFileCopy(filePaths,folderName,storPath,ID,type)
 % Creates a copy of the files (can used for multiple paths in a cell array)
 % folderName is the name of the exporting folder
     disp(['Start to copy ', type]);  
-    
-    switch type
-        case 'data'
-            sufix = '_data';
-        case 'script'
-            sufix = '_script';
-        case 'userFcn'
-            sufix = '';
-        otherwise 
-            error([type,' is not a valid type for createFileCopy'])
-    end %switch 
             
     try        
         for i = 1:numel(filePaths)
             FileNameAndLocation = filePaths{i};
-            [~,~,ext] = fileparts(filePaths{i}); % get the extension
-            newbackup = sprintf([ID, sufix ,ext]);
-
-            % Write the copied file
-            RemotePath = fullfile(storPath,folderName, newbackup);
+            [~,name,ext] = fileparts(filePaths{i}); % get the extension
+                          
+            switch type
+                case 'data'
+                    sufix = '_data';
+                    newfile = sprintf([ID, sufix, '_' , num2str(i) ,ext]);
+                case 'script'
+                    sufix = '_script';
+                    newfile = sprintf([ID, sufix ,ext]);
+                case 'userFcn'
+                    %keep original name
+                    newfile = sprintf([name,ext]);
+                otherwise 
+                    error([type,' is not a valid type for createFileCopy'])
+            end %switch 
+            
+            % Write the file
+            RemotePath = fullfile(storPath,folderName, newfile);
             copyfile(FileNameAndLocation,RemotePath);
         end
         disp([type, ' sucessfully published']);
diff --git a/test_data.mat b/test_data.mat
index d134e7fb0ee14a0301e5a87b08ad8b0dbe3416ed..f370a2c4bfb09d1835f12174e0af259ae2eddbd0 100644
GIT binary patch
delta 876
zcmeyt{h51$6PJmhm63&lk%5un#6abV39K7SOquH4m>C!<=IBo1^a%+UX?tJ&UH5^}
zrVa^-#vO~MI5qB=aN|!x&*hFlmOEBX$_iGh%@Y|ymGe4`0$sWi0vJtqaQF0u1r#Rg
zCU|TxaE=U>&^;npFop3>+||i{eiltCo}{nt?#2=6$|<N4H8KCs{vYpcl~rG9OKx&r
zv{l4B^Iuv0_XV2g6&^f4vv1w5UK^pW&s!7n`F8FsOjMqzqm$lbnwnmzqAf3Y)}?FN
zy_(W_ZOrv2uWvZ!dF1E^5Bb!c4VG%h7yQ1bl*OwltS&F`asKPyd}g5s?uh03^LiWX
zvUL;H5;(ItJ7aF$<O3U>wqJO3K*=XEclF<i3+CjW_v&3V;cWf)_+8t3jxJ{O-eET7
zurqs^?_V*&rOuYuomJ+~yMC-KLzcVV+(Q3_*oTePt!68xxUO;bOkXa{?Ax^VqETlv
z)0y0_`<Ygiq+3>3bA7)2X2vTXIrEgwTx}I{pVm|@e-YF5cm16|I`zRFy<x5M{kuGF
z=Eb_M6Dl!`Z4MUOED<-izTi*4z2=j`KFQa4MK``5$a6B$SMt{k`~P*qqN3Z&8=l#U
zyn3xIy;sM^&tCI_zV`ABIXpe`m3j^PZkITgPJa~fsL*~ozsO?7`NvqLH1&9%PuZ87
z79b#a;+(#k$95JSMX9D09?g2!B3qKgpYoR)c*rg1vAd+KaP;2Q$8)B+->g4#?>=82
zXGZwX-yOeQcwQ83v)W-`@qF|3r`K}0roX6Ew3l>ovG^Ubbm!-ank#<}Jy1OKH}%QP
z;9QZPr}_V1)>H3@jgKhG>^Xey%bO5aZRXiCEFI&xE!WJrSh{FiqkH{}ZO8a?W#Xb!
z)q7u9JUKnNYrSgV8?S_4xo3F%PA&_1S05hC(=+S$m&u%Z^*U=_zIgIrXL{lKmz%zb
zJ7#)XYjGGoeYs1Vt4ZE#+0l)CN?QK>?sugVC+z&WMCU?Z!i&6!{g$o{M@7r~i^ADH
z9W1%JVQa_TkL~eoUcb*B(<-bH?pA%cU&~3ZU`4%InfAU8XYWN?xv!(-%#NB>mFvry
zX6_8wCw0>Q?`f02N-yQq;?M8d9^w%8>5AQXbDk@L`-_eLR#aSnXC`@@WzPIxYTMpP
p9c)`B?W%iq()(iTXj6_^@9&(f3RPLKZeQv0Wf2F&CGG@x004kanw$Ut

delta 881
zcmey&{eydg6PKZ(m4ShRk%5un#6abV39K7SOquGvnHd-==ICCm^$AWFVf*m?-uJo{
zj;jtw8bowR*<CS^y{pxo*#E*oj9r$AYe$(7$CizJg}qWUvX>lAoFi!9HlZy=<dxB~
zB$W(piG|KC*VHtE6*OL?u$HnKrY-d;|6VvregB-vpO1U`DJZ)5atf+EpZNdJ@*n@J
z-MsGYH+nLm{z;AI!%KD5-Gv8rG~#O4b;zE5kf^t|^Vf?79dr2EOv}AkW9Iejm~ZR#
z@iEiui~m}gOs<8+XQ;X6-k+4cDo;?IFW&RgKfOhnEk{cHIV$RtEPiwcbiF*Z^Ycnx
z5zFP*)`$F*_|lRdwa-uF!Ofh`xE&rX6a94V&C*(QUqk1r%!B%Z{OB9&CdKi+>{pt6
z?7HENC+|L7->a=ut&p;8!L+2Ul|Kzbm78l>gI5J*#{Jy3a)-6c0p`<E^}BqIob5fl
z`KqT*-OTwDADwxcSQ+;2{_<xVjW*l}c&Gki_maN2=?;c-<Zf1IPje03Ta~`MnSHvc
zO4jxbKkODLxbAmr*_)u1zo6dlz_<2R>0P2C3+2*}rrNtcJRN&zwXn^v#cQ`kpJnR1
zYH#uDtVVlx<@x;6Sr$|7Ufx?cCsokyd(A61;iDcA6AM>NZEr3=ufozPar)#u-_lPz
zOy+%Ds??OQI&XK8)%^B{ejlDJQWiP6Gu$mltxJ@bC-b8ahtb^wjGG%m&lO%*uQ%11
zqn~oLv)<?fi;ZE=w#@|*y~$N=O0knG)7qyod*1tet9FKS-SSuaN=;iIWftuDCd+lZ
zT%J#k=W)QS-SN@$4?K1~8h3c%W~FaCzC1TEuYB>W>&E#c%{lK~-OO*Z*jSzYb+}0)
z<IeSy>s47o*UjA4m3C6^{AKwd$t8O$PdlBf-w?4(cXM^A4wGonQ)5fVnmc>et)5@>
zqjKsZ<F(xix#cbK+on05*|zZ9D+W2=eLwE@%X7^r^WCDA-+g1x=I>Dfs_nkX`q}-z
zT~3Hbdd+The({+5`FYRptG+ImHZ$AAvEs`2h;EHVt7=Z0S7^RDdnR9XD$BQRljqdT
z?6}u&ts@m`-1u^RU)PlN8g*Hoe-3N^)z>?H`?yPB&Fg}hpKWE>?z*2^)z7`-_QLb&
xPnD+ixZG0fc74-dEt{mDo^Z-@-Kw}Vi&p1$f6D9Wu&V9%tekuJepQNBD*y+TurL4s

diff --git a/testdata_2.h5 b/testdata_2.h5
index d6242fea21830dddd8588742028ad681787aacb2..99ef780a89c863b96e21683ebb76e8e060a806a8 100644
GIT binary patch
delta 27
jcmew%{zH7j9%iN$J2vlQ4r63mv19T+=Az9VtOaZUuwe_C

delta 27
jcmew%{zH7j9%iPNjhpu|hcPm>Y@EE0xoC3-YXKVot7QvA

-- 
GitLab