From 65e5057e2032b9d3abc88404e050a4b79fc2eeb3 Mon Sep 17 00:00:00 2001 From: SisMaker <156736github> Date: Tue, 19 Apr 2022 00:24:46 +0800 Subject: [PATCH] =?UTF-8?q?ft:=20=E4=BF=AE=E6=94=B9=E5=90=AF=E5=8A=A8port?= =?UTF-8?q?=E6=97=B6=E4=BC=A0=E5=85=A5=E5=8F=82=E6=95=B0=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E4=BC=A0=E5=85=A5=E5=B7=A5=E4=BD=9C=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=20=E4=BC=98=E5=8C=96=E4=BC=A0=E5=85=A5=E7=9B=91=E5=90=AC?= =?UTF-8?q?=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- eSync.sample.config | 9 ++++++++ priv/fileSync | Bin 1396736 -> 1396736 bytes priv/fileSync.exe | Bin 1524736 -> 1524224 bytes src/eSync.erl | 51 ++++++++++++++++++++++++++------------------ 4 files changed, 39 insertions(+), 21 deletions(-) diff --git a/eSync.sample.config b/eSync.sample.config index b83e8d7..662a4dc 100644 --- a/eSync.sample.config +++ b/eSync.sample.config @@ -9,6 +9,15 @@ %% 默认值: all {log, all}, + %% base dir + %% 默认值: "./" + {baseDir, "./"}, + + %% monitor file ext 监听文件的后缀名列表 + %% 默认值: [".hrl", ".erl", ".beam", ".dtl", ".lfe", ".ex", ".config"] + + {monitorExt, [".hrl", ".erl", ".beam", ".dtl", ".lfe", ".ex", ".config"]}, + %% 这个参数用于设置特殊目录下的文件检查编译与加载 %% 格式:{extraDirs, [{strategy(), [srcDirDescr()]}] | undefined} %% -type strategy() :: only | del | addExtra | addOnly. diff --git a/priv/fileSync b/priv/fileSync index eab37de56aa9955c0f34f24c0353a9e14599d823..bd5488b347187c22aa0c313e9fa41c27f784b3e1 100644 GIT binary patch delta 19132 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 C0<#SO delta 19191 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 t#H*F|RGX2#50&X{J@cp6ttf!b(*$zb!Mk3+IZd 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 delta 39092 zcmbrn2UrwW)IYp;w#@FpvcR%{D8eAv6;ZJUmDtwa6*ZPsK~ah#*cA~Q5)^}ajK=7u z+oFk@F&Yc88@th1qGqkDXzUtel>fQ+?jXtge&6@}pO5ERe)pW;Ip>~RXLj~3%$z-F z=KMj01%B@bY3R=*O@!bjXf>L`#h*TrIxUnm8edcw7OfzaeJ(sjaSgtn;cHpZK~jw@ zDEbqBOGSY~HR4;;0)M~1B}rJP?c1(ir?iQ&V|u4fo-k=*YRuTKby{adPneRJ)xJ}k zlwRXv$M^2vX;mE&ntu5y;Xl?#6l@S+wQP=4K=5u;riDIR^4u(Tt8UwKp(MBHYVK$fyrskJY=5$K%aLW@Xi2A{j1{xU=A!2-J|p@q%U7Tt`C&ze_%*+<#XPi zzV)?5z<3v_TCpNieef%GWmGnnv5&7$^r6y4*yQXu(eiW&y8ybKI?@Zz|Kj@%Kxk=EDs_NB%p}A06 zL#g&a=uC(cGXE43Ndx85pF&ST3a^TOR;)8fY4li_O-M7?`9#PjE1>yPA)ZW9rau)b z5UE9kCzV)O^Gt9^Pi2pM54@fWqXXxu@(e7vKmH51vfQ|2$bT+`k)E*rxzLlmRNg)p zY7=q^YP}ThM}*c4z-4HwjF1~Aj;Y|;MBmoHz_gE_*MO#f2_uakq5{`uf%45?g4v&J zP=1iK3$?_kwDr;ERwjAMk=ojG23(t~8)z#DujaxoL~>cV)Ihr{g6ve5_tnM`at+S+ z(?*gAc->FisQUWBUUWGXk1r_^?WMS(^{12DmcrGiCYHn;q4G57pP=o8)91?st(K7O z%G&|2?O0eJ#oPqtGchQd5vVtB2d-nKW}rRqgUD8x&k@wSH|+kW)Sk~2=IyAk&#Qp$X)tfB zcCPu_W>nz*8H}TH8A8Tsza=Tkk#X9Ug87?`oN9&C7s|LyZBs4z2-Z*3*0VZRTQ!C5 z<_ZsNw-=bZDSuAXKJYcie9WEf=u}5>&)4Eb+;=(Z@@;;KZh^Kyk3Ia+B5kT*G#4_p z4~QRWH=Fw`dRH56#-R(DfkW9^q^(#vJ8mqs_%L!iy=dp#8ZmK6l3luIj>FRB)ntDW91Jcm!nzdeA_H0_Ks}TIX`p; zD}NAaFQg;uo~(5JURz`|HW-QC`Q}KtyF**U_!*Nziy&mD_K0zD66Hc?DJ46#H7b)X zitUoNfetT!9juS^H#jXVZ7uuG_DonBkDE(h(Tj|ME zSn*mLPKLqG*V<6>9$b8_t!va*Wgb3Y`9~Yp>vk0F58EAt+_*9{g|?Op(_w_<65(7>HX3aluOK5-8d{1x+^{=SZUlB)HvV#CHTJ42FV3f z%Cjv*$c=lMNHeCcX(+Q>twgZD(T+4GMpCD^zM#C(_Aq%f$@Zp-;`df76XW#=%7&hW zW~JJh6$UUVt`mi(S10bfyH;Sc<9#?=s;%0)3hFIkNS(FJ8bO&nn-NvG8rs;0U&dK9 z45g$(*39=9A8Mze@@;vPu!POVjzTxu4St*-wX};a-Z)ogLp^cZGF?wCZmf5;x&*E9 zmk{QAOz9x%zBJTL3$SYDT+STKW>60l3f)sb`ls}eo|akMLv13PutL7MDOB>&RUu|* z<)hnc^tRFl>CKAKqO%A-&wWwEWg3o|J@!?i{B&9Yx3U^mT??)6mtK@y68R0yG(YrH zWn!Q%P$2VQVX)3ll9bRl%E-lS1^jj#ctb1vkAyCPd4sXMBH;iWq^%Eu+B>q{@M)Z6Ls&A9f~zc zw?QJYuy?F(6PW{J$LXq(P-Xcz-D*84P?}8CH72BwGIo;gL_5^C+@o72`G4KTU*mp1 z@ilH#Z6dqlezHutb3`{JD5&yLlV&H~XzlqacsG!{zaH*}dLs;S>D~&aBe3|o&I)6% z>%z!6rSQ7$urc_<6DE4^rg5+A@U|3fmozfaJvmVsTcX=wz)MZ&6Wy3_<7|sR?SMH- zp}*dxBUU9NNI$a<8KOLGqpvKGZs6ZuKakv1(%S2jCCvLm5B&u#Ua-FFqhBl#i_$tl zf6hpnDis|1R}$%_SX1;}1mX2J%CI#3d4h|*=~(?}LVkoV#_2yG!+~Vz2NS(AG(&In z!Mn=jnflY#0Zu>l!qA=;^W(ZhmmGaq(|Rc7#{K9D^sEqHl-UXqvEcqFg-&F4VaT7& zH#~lUc)UjWGDp8O0I$l;m+31<_sa3Ob;N>uTR+;1`V#>(wsK63-AFa61M`>ZL!}^9 z_JK{y^cABo&GZC0jRkib9;6Nn(ylDXMr!1XtN#mlwM^ea>Z3Y!R^mZ_MJG*|>WPx7 zRR2VOC$O1bG-=%KoHulcTxohbMAr?dI>%KfxM~ko{mfN6xoQJ+*rKn7x0B(Tq7NtgmB~l+vt<&dyuGLYQZPTlWcUeNk=@y#HQ=3dZcoEDz3zjNMh)yuFa$zR z{6%U*a)P0T4)3Ns+6@T?3%LkCB^YY!HY9Ovz_R`Z6IlsTe?ul|q-6IuBntr>KEPBh z7g?&tgDlmL;h%wqv?#}Znp{;(ZYY*=yQyCVo!Y1-C^NTcrRosF`vUnuNp=|a3S^~HbA(~A7O!b} zBMs|Gp%OdFFilIW@ckG=B>7YMZH!^RWNo^^7ke^;-ZNFD#r(Kv_;!LJBqRW(+_*va zZR$PKdQUwiaD9Ryf}B$H6Aix-qjeqiG6#TblA)Dx{aPk%fEtqxqlY%-QZoj&<`nYG zof+7=AmqkPxU0smgEDJJBo^G=GD}O_Sp4EjzoAy$nUxuzAlyKi{;(VVOUl#9hQXpV zei^#bcL1Z6fjNdf#MpBs%c2)VD<(u3a4@njg51tly930mf42&@{Yzh z_wvj;Kc>};xT+?z1!Wd-9bBGms3oUyvqj7-xXf%GHKWfiWUPpM&$5YXgD)LpL6Jbw*io;IbPAX<&0-*-rD ztqFzIOu@=9Nj#{>O}d7!7(qx4rL&*-QZL4TK}|xbNl?+|0eaX|QIwRiL1IULdB;br z83SKfu(czas;%vXGV7I&aJhzv>w%kvF|*(@vmk0lr>2imt)@6jBDIut4aERM#db5W z%BFwgZAXE={vCV=UJ&|p8mg-P{TdcmGX*LSn~4ieq#w*^Bd#V2RBkIiAbyH>J5dyj zi^rnn&HLOE6E-M~?P9T{i%b_aFteA)w`<{98r1A1R@WU(Q`ITGL<_!ipVmvPO){0W zy~K1a(LsfN;@{*uB_Kh}@+Je71tY`=EwL*bM~ce@auV8&7T1y}<Gr>zvj(8{_CKj27 z-!rDpYR34$Z?nV=0gD?VlldKEQa@!(8bGf2OSLl%kXgE!F$-5QCX5=-;;N}!^@)-< zTYRa*yR4i%(H=0hE?U%G&z!0)XHMIdD|uoAfs6pZ55+DOtJX$~kH29SA1!4TPivuS z?l>8s67|ZlT!Tb{Z3*cckHXM_PR!dyB5$1w$8#K^0cjq$>!YB)O-4#Uf@F zv50e^aG|)d_O<#Vzj~gr7sQ@H!QS*yR`uMt^JnpS6TRTt2F>%#*4|3;BC&@_-cf~3 z{;9Ls$F|Lt6BUrSS%xrm?Sz~HO z*GOIX`eU(%`~^2VkV`A=T4uHjWoEV&9#gXc+-xN?)0LSOQ8T)IFM#GNuu>mx7RJoB zA69biti>B4e?#P9Tod-3{ihIc z{4S!OMd`ktI&@a@Hi-Ro#xvBiz})HUdz(eQc7Z_zQdb)SGmnW9`28SuBhSF`gV+V1 z@@)D++(& z{IW+}iW`SxFFIU?OM5X`HE35X&JpguhCdF8A#mzFqc=P)7JHItX!o-?Te$Z(9Q#?^ zPK+>TpZE>FMXb9Yx0MHQVZT^F(jn;pW^xot4u~_z=P>%9IG5~)#|Oo9vK1VM#Od^w z_7Ex+NIJ|d4`a^z!Er>KFZ}Y9RvHGM2^mMR!`6fJ3vMspg7S;Fn5005W2pQD zT*uJ9(<5%b;J7$|tbtp{F~3d^J-QQOU-A>UPGFsVVaQ3`d>X;Slj6sC_nUVLd)okw zPm7C%`z3Jnw0N4Vg-_0iir}~hqpyn9VA@%69jOY{eiict;VyJMCPu*dUvYHoka$ka z)gHTJfcJKa;ox;1JMAh=JdfFJ0Ml>cF0u>`{f2JCZgIB>7sMq*0If56e-#k(X2wqC&z$4B;8#hoM^qOM^}n!>be;t2F` zT@&YNJ74kCp8toqK4e)VoZ^-21(WdYlkHJ~PUC)NraN`qbm;C9`-DW7=aUy8KZo;y zu!r)8W6Swx&qY3v^P8aVb+K>A(DHm5jsKN5i{BnTy)F(2dDifqzu7=}f6iY9{~KZ- zsZSH+>Bi6*#-SWix17E0*nG4f;l<+F;19|lYVa=#m4o*zj0uS_idMELX;`qwDW2UET==Y7F^TkKbL zZ_K;+W|B+&jm-aRB-|@REa#hB!-Cu5u)yuqmbQHpC zn0iMX9C*2&$L|al+_9Xy3J)o_TIH5eu2|3fM#FG7*4JL;T2QV7=bpf2H;oys#>9gA zoR0a;fNpn@OINuh$~ibE!M?i~Gfa&cNMqjBGQW?Y`91XWQaOQgS)8j3n<#fujd_s9 zB%E6ZRZ1}C5S8moxjccztPd+o(65Thg;37Mx!qv7kKCQQo;F;?g4;=$Uq{Hjk1;2z zTpHzSaPADerhZ;3Cs1yihWQPK^aseTuH%Wh3=8gf&fS9>4=`r5%2lP@ky3oxkZ+y> z1OG(7{2Cs=Sy*uQ;hX_ZQZ7v80x9Qu%ltlq)(@jHP9eDJ}z`tbQ9j5$)}22;+&xgAjPG5Wo(>hXJm1^3c_m|r_s zM7c#OHU5b5Gzk^_!}48I;@hocYaw^uLg^ zsGNav@tl+3#$On7b(kmSGAy`{JY#+z!N6DO*Iec5Q?3u^D#J<2oviHfJBS6h>nZbF z2d)3cm_t;qFXfUsS08r%jecG#Cs6MB6Xv%YqF*DoI#kUC3+^1wb%f7fW6Wrkt4cW& z=gvUIf6(u8C6C`3EV!3GW-$lDBFd$!ToUDE&fNp;8;n_6(c||53+}a#m|q4=eIpJI zDpI)xl#Auu+Y0dLjW{T7RVYARQma`BwQ>8Zt-icM_;7TibfGC!Q2I`r$L za_>{F59e@tQtn!S$L~BA+%7ls!|AEVnCU8)M7d1`Ghrzhoxs9ayl$(+OKX~dWh z{XBlRvEW{Ni}~U7G#Up7<*M8i%EfZ-tq(jh8V3aisiY4ji*GVVoSr5O`n9ho=%-k4 zcivT+?s^%A2ihq~?`&FP!Tqy~Ip)JKZ{&V6d$f#W~#N zDR<4w<98klZo)ZSMiz{ju5w9~%e%^A;xe+JUqzMkr<{#*xQu*}QzTE!Z?WKZUSWQ? zjC?U>dzEWJxf-0qWkmfhn>>DJu;AYIJM+V3Suy4v(G&A37Tn34!)0Vezo{yhLAmD_ znIA5r0OTwxXP{gT=WrPXV9eD9Pt0XlaGN-X%gBa)4OFfs<(6JxF>x7D?vUQ&w;Ky? znRB>|0x{+gmFr8nwZAbxTtJLM&>&1^r`8kndn~xmonwBujDnHtrgH5l=inSp&|r*tP4M`g$AbIrugni8 zXa)4!qH^mfm&G}pppa(ssNBz#>%+MgaFTM_|9EnlfCabfB=b88 ztt(^9#;RXk>X*#90kE?&`sKdz_)Wor`}qmx_a{V$Ay@6ShpUVQcMj)f!RKKZbCK#d zm-?AFCqcz<^lPnh%_z6@IE%Rq7EvxtjTuN|%AAV;t&A}@{q3pmD=fIz9`m$)s!U_5 zTr*;$N8G&oDd!V~$k0!IbO3IebJNfqt+5^3?YP3+{7AncsQn zRt335DmRyM4$cjOeN`}Kn92oG?(PxhcMqCJqTeqsJu!dAf;)?I6JQhNhNxU$$`Q^9 zP$dduK78TvyNv~R-eDGV0j!KN_Nnk8<>=weTrAK}1S)d65}2wQ`vg{1T|=qs=0nW& zJIJKmzUQ8>JFwtx%ei)NjdDX(t{>$t9b|r&p<^}Uz`&Q!Jbr&-!JW*x(Xg|cu}{bn z%F%T4u|U&#eSo?C^AKuQH}(#!tNKP!-$G6UcNFKULMi1&soW6C z?by$P;t9PPm`~{wkKYR{xI1u;e$rs|~>Es#U9@hAd*s`rNvKIGgVr9R}`f--x^xlWlHXB^y(R8%f~XzWYK zuS(29W3o5tsH|LJ%&A5al+d4z2?7}c6ZRXYk?YFS{YKGCo^l^QKF>1`>`uc*7SY3L z^jJ+Vlv&u0Q1O(p7Jg#H%%Yjug^yITYSfJ02~@^UjEwXXBWCuz8;!QG%CL>=@FS@u6jWLzS+{>H-%Z8fAIP zG1gfXnSG>cueVZr`V3!EDn2s)LMpVYjdACk$qd8C=*4MxVyNkpOe@a$Mo{|Lc&I{B zt#`C5^&Q<;x%R|p638*-?lYqo(e6E@2iGC7g5vwa7~xNPDh-ULmc-`&tsWn3*7}=% z7B?dpk3JTJmTpw$nN0pfc)bBuN~Rs8rP9~SG?WN$H^X*s(*ge>zO2DR5lUL&v-&%m zV3FBW&o7SaTTsY5Y|lFj#e1~D;5M5Yk^~6#F@51z(ZXCSA(Xs_uAjphA5$IE8y}{| zn|Y(f)CeCsx3rkr2#>#pITlko9vXdaF(r_YJ>GQGFZA#XN2r1_>)LOXk$$Gu#MsOW z!!*^`g75uJr>i$zr`Kdvw&ygtfnRsX^0w!9rU#qbMAoB6X3SP(@#JcOS%UReQwwqy z?paMS;UBN1qf%_oJ4HWevf~F$-SOyC=q#>|*$bTmOckMTfT<0B4ze=9^o{X|(FczZ z)H$kjvYAp0WS6qNB9g}KYcNnjXgugbO>VzOrDi(gA0yDgHBVCBgknRjYu}pDS-%be z-%=nG8?Cep!+|mOdqX|U2~ZGj`oieNC2ysvY+4~&P0yK|gy3;oq};A<}$OE%xqGbSz~HOXLemU6lbt7 zTV>CnAh1<#khis zO+)kH`_87OHD8@#(mjOoHB9-VtcGZ;9BZftwk}vhb!B50Q#)f&@yN1~YvfQzF7y|W z`kHnJ-%lzdCl4(nUnIgGeND@R!3@J;q!u!7L%gOncq(L=aD0J@DbwNh#hGqoqe@cvAKEyGQR$P{Jj z2$O}7j*y>dnj_pyQ2g;-Bf*6qG1AltKa@)wY1$h;w@+E3+HO2iJbCm}q!ITJoQU(3 zuA@v(1)-=1v`R4r!@x177*ZVy#+be%%aoQWrh$UCSyz2gOh!f6o@Q#D{c01<+IEjZ zo^AMMIs+;_^Y>g(2BOSnKu;{VpJ%h{)@|CUS8bvyVe2b)o`#*0sgPqTGzcXPVEsH(g@98HkZ-V&1+Kk<1>OZ0 z=HZ2>Knb32nrkyA&BD%as_&jQf1oKL-zd4$g%XAI@CS( zA3ScAZyuM8``^0*-1`2?7i&yE82g4;S?A(jTVktMS)q2(P5X#JQw^FK@hDoFW4Eq^xE>0?6{cQTfLar+F&X~@I z;_-)pk4%rvwT4uok)m;LNU~x-=Gpq8A~){v2(^jbP%a6?Y0^%a_|~+|SUWp}dNfAU z8Cc4VdpMAq`gO)r#q@YYXFQsZ`jX1%lBgu$VJs7gQ+)lTom$cZjs-}4q85152zYKZ zG!IL;aew1EZcUbiU6q3}e>6E!X=jrX^uA`1+Q!kZbtPbxB77Sn1xYUrSVJV%@TYPz zMA{P;8G6SX&7$xd43)5y8&^=B<&Vh(pv*eNOZmQ;w89V1dUok79oNYN#^71AJaeaG z)L!SWwzoCPY)G3y^Bxi&Lg8i)f1zgE{Zz9%D6_EGq4>o<0S|fS^^$(q>MV&m4eaV< zs-Vp3CnXD{1KjT~J;u{uR|iP<@G!%Xfs&IPRmOZEZ4~eve1#!WkcsG&m{HO{gosMr z(UL_FUUtXLSV|CtRbAn|Nm5m1PnvX0OV%nMW=P-a@qJM9Nz!VvLb*Ii8lsh(wPG!4 z?xZQ+yzR$#XMF>dSxagv1E)!yi0%O10W5nd1Y{TVDlO64OON7x`LxEC9~%0$n)&vF z%sTixIP@j@M+#~s5*fEybkLhg$2F>zDc32`-bd74}ys*qZuTnusC1#|s23Te<;%a?~ zj;4`CqoQ9H#>>{FCKYCmr{PK@_M4jU(4#U^GW*kg3pHX^2s#ZT#e7UeXGriLyMH8tVT1Z2#Hzs@PhRL zcvr`Hhqvh0a98Yi1{;xg)@>=o+Y{U~^zFb~vvY55llSrcnGZbdF9iC#hjqpyVYo}- z7aBi^^u23+3(hloThSj;2KZ`*^b?-T8J;Z-0lyq6R9EPJ-4RY-#+&@N+0r3A@p5pc z)JYik?ns)ju>-{9NFD3`{_+;ge-btTMe4e9%hBQd80nw6mprJUFvxwlow^>OYz-RTWZrqal2^7Qfxzmi9_G z44fkYzJGW+M@sQEukfbtUVIR+0?P_WpDWe!{pe#Vh88g}FZmeO&6S#XpTHdF?9K9_ zxBReqfG)rkvlnmu-CIYOuf?}DuchleX_(jj0&h*1{GP@x`4x+NZw15Ic~Ttt0sQ7m zJ;*s2K3{5r2e&?%FV!Va;g|Umei;Qy=1bMdaR|thA`zPAN!=UXSjN)1$-s7tLf#2_ z&;0kZQaUm?dirc`Gn0WiXBq6ulWIi#Lc6tdWD|S-w8(_JTi=$J#_V+$k9=KOO2$0e%V6y|wd;(vqh3{1AJ7 zMtQAZF@fj+8{(^QJ`(U)6FKbWo~cwO~N+#PzPrxt{`7~ege)m^MJ#!d65*5tx&_fP&!F}TcPc`=3SAu13YPl-Hu?l=RVlMcfRXn)En(`JS zU{gvFa^t=^tq$!qwTAPwh8#}~*-fwttz|ALR|PKe0Zp)qTK}_(d|t%|yoy1rigsmH z#L+6~d!vR}U`x3oR^xtwLqa!*?rZ{&!pJx2XyS!xlpPN5HJY>4HKWDZR{RHk8_HcV zny#Ijr)c&P?cVP8JYQT7^xX#v?#nd)f>1c9ZVn3`;i$KLRa#2t4}O(tiRatN^-ItH zXGWpsKQpS+zU}x%U*i^szAoKPw;EjPuW@;9r$gv|j3s{6x`U-cw{zKFI0ybcCEfR% z;GS>@*8((ME7tV?nJ$VH+!Ay5`|fjlAqlogq>En&JC0RGtZxj~BI*6?_Vff^LENq5 zM6=sS>pYL2o3TxgHaPDpe)GL#Khebh$mY~uZ1`U&y6Xkw{Lc%O@miA`=YR6uq!m%a zChc3iT)6M{r?V*qXMgVgR{Pv58e^(ixJa-f{sSv61t!6oOMyen{c81-Pjy9DB7NEo zALBZ2NG%au9ORo!a&T~RaB+}tagKwNgNuWFn{ynT99$gaJDlU-(@;%ORaB^^QkV`nn!O6kJLB7v94o(g(4)O!ead2{QaghJy90w-{7YF$v z=QubyxH!mtx9Go0n9OO5gILE=s!Noxi<{Sqn2Nwsq0&>H^ z!NJMF#X%0?90w-{7YDf_=QubyxH!m_ILE=s!Noxi4ssah zI5;`DDBv0k=Ntzo2Nwrf<{Sqn2NwnOi{M;@*AVQ2Vh(Z@lw`=EfFs5sK9WgJ1mWp6 z5Td*W(@u-xjubFjRVL+daB+yQ#vM73>L{%O2L-H*XMp5Tof`O zz5xR#2hxy94ho+`F$LV+W0^9C0(K~e_(mw@gOkEiAdMO4ppXm29ONcUnM0u%TwIE8 z%9KtD89A?Ls6myU}az6?oi2r~~9O4I|gw;~O z8U}NYL;MgfaflzvB@XcpE^&w-h7v}hfKi5XjzjziE^&xY^ty(VQ%*u<6L4~nM{na@4)P3?u=W{Vs}bU}8Mrv)%w&?B!=RXhV-`xofaEfzlSBM$Cb>A|%wdu|mq9Uw zKH!+gfXqk0KBIv3n;W^3Vp!28=(Lkdk}Vkycgkna8W1#XEDNY zaQuvL8svQlo4`e313331+yut~gySF|MEDV06wvPw0)XQ%!eWq*AYi{xz~Mj2!0`(M z`4|Hi2j_9loj|~Kdy;b$27vPv!bNbLM(6?Z8H7}DQ80t^tk)jl^)?vxtJiMocn-DL zp&Xp&QNls`4Pgk#7ntOtfXQ6M9dHQbTtdM9xy&H`cLeOFD+qmnTxF7rL-93~27>bs zrp$36;5@y~r1%>Q7bFmH1~A=O~Wn6vrw#FDR~1oG-mv3S^k#dPU_C3VF>@ z{)b|M68{EoS&`3q%dxnWVxmHbH{t;$Uhp15d8d|Q6NTt04ptln?`(=Lkz$JCFnMH& zVxHpgrkJ3(%oK+y4vY6{io}oNJjLlxajg;`;Jt^C@d^p_zD7uf;tHa;O)0KGF+p)w zL=;N4DYHVouTq60%)68Yl)Z-tC>K}p-a|2`D#!R5-q!@uU6E^h57AP6wD%s0@eL^I z6w=tcrH=Ga;+uP~*5POHu9n^{^~lR@z47mxwNi>ZdY9@+kW$>;yXXrXuO836gYa+A zCO`M?MU=fSyk!CZvg-A}yjMi};|FXSytAS|T5m1U3R-1KsQHW^42?Dikm=xvHd|{f zK(^v(jix;!eLO~=wt3;N{iy3$PUi=!qRlOohtcLQv7cdSjCn|fCbEv%qnYLpe7F{l zh<|iX(*w-)%|ZX7*C0IWvpR)o z*TVqxl>`s|TgP6cTOmbX=@8lw>*)Lc;5{6=P`Z2y-=H^b5q)LB^#9VnsHQL8CmWF# z5@bk=H3#A)=nA!t3H;yN(-X|G*q*O=7Y&9ulqy^-m)K#fnT|wtd<}q9O85R>=y0U_ z!YZVNRx*4_YiRo=YXufLhO`uLAp0`hZb0Ce!y7$2X!HYV-8eSE2B|po@{<$W$yAaJfQA0s;Z`@boQ$5v<+poq20fG zDz2wF$e+5awQzT++shot+VHQiP=MyFW2w4))c@9|Cac!QWVk}z>7=@V?$t3-`s!aU z*?(v8u2HlqoTI%w9jhkAqtem-Uviy})^W6HkMPq{Uz|Qhe9_gV=1QZ`2rP=HXUfY0 zJZ@mN#w8&2*MCga5JNrPpoSQWa;tJ71t5*gR<`Wa$f_v~kpriTq-x7{dFfzMZ}YVN zG~55z@j{+{SVVv52cX*#H{)vswrb{^f6M=BHFW7?4(i_u-It@8I&f5Of*Bvi5PR{p z2E(Y~_x`74>d2_+|9c2_(eO0;LXR68FqGGzJQPE>!dFJQ@c&hv`)^0!^b z7=v(k7=x(p4!7a-C>*1qsG^$*-Dp(m1eU3JdO00#AZ#Prfrzt#Z$uy`o7czC3&MQN zwmPcA@kQm$|B=;c%XoN`Yz~U0vxD{(?H9Fg4x?Ot#r}aZb)l~W46B3qo@Q$d?JwG` z^-xV;Baxy%>hMrrEmLd)1*5UXL^SJ;Q<}Qa7nNtCT!>}*`W|Ip4EqSn^z|dkyvA6y zMqgCZ7nNyp<>f~nS#69C7Sm)C(DeUq&=SX(?}W!wKUzik{`tR)Q}Cg=Tfi`NRO{og z^~YgsgsAEocy!;F(>3(yf^eOwcCjAa^l~~HhsL`mz|}S8z#cSTI?Uzs{r{JLTc`Q+ z0A=V8=FGa;H2NqUtMbvu{zooEnGT3L0Bbz5I$)boE=<_%SYD@W|T_ae41yj(>TuiANvo z!TBEj@*~`CxksPi!R=~29(g&Jy*1rEju#GfT`b#vc9k5#w+v6uO3U|}ti_coZ zjAhkPNgAJ-HEcYufy%J{jK$kyY08{DHnAL4dd4DoD5!DP;;)tmp0#+X<+*2B{WO$0 z1M^ExO{`xQqMB-D{I#qSukn*pGabXqY{FphukWgv|IW}mby#v{s$*<9%WJ<{OrDUY z;iDXBobo$oiAHVwIZJJ|zJhb_vfXp8%n7iphX>~@M%6I-szt9aS3`^QmOu~ZlbAMP z$k_Dp$&=pkQes9%dd52$j-F?^_qc2cmmK3qsbh!39u8r@v3fAQaId8CnU3LO%JL2O zhMvC!^fmLGCX}lYw=A@OdT>YIc-Gx#BvkWD>W%O zO%2DAsdTw4j%j>is)N^rLs2#jR$W%}k&Ve|lm3h+=0!1XY7m06g;4f zQ=(kM;mj3FfG4_?IyNIc>757Q{4JXfA6zZ#5AU?Z%(3Yyp3Z0aZnezR3IHX-GTQ1%i6H~J?6U!|K^Z4YETr2BI@9~qz zzuOpD9@ig~&zzprlk^OUuRn}o9LUbv)x@Sdzafe%XHEN zM~d1ns0@ORH!OY_n3jFnJ~BRfVurfEu_{*IU_D36@0KZ*OzCOEJzdNUeQvTbp=F=3 z>FFuuh5&VR+r?UfP3h6e>AZib=#?HlHd)=^$z4kXoV>~AFqXsM)lGgO!Lk?b&nbzX zDacaqa7%4_5ES0F=zS6=jrH^=yX5t_Z3*)pkvKd#Rb8P}11D~=G+7Ah=9QH;-jU>K z2(t*i%`BLIQf9g%V{#Tx7&V?|uo~&LhZ;%aveGll1u!`>)%Ae2g!?38jA;6+Y+41w z)jJl^=ops#A65DB!70V<$_-?h4t~6&&P8Sv%4Y|6fQoKLvNpDKTS7b|3|RK{n&7}) z!?T!Zez3vKRvs(+-naO|LpPfgI0SXk69*6fJ;_}*0aM7OP}sy=kH&#dBSuY4~O)j?YX<9~q6W ze|Lv3cy=Wh%SC;3H4Nh#Tr}_0_PsG?nPCIUs7^P;=g;Bs-gBHmI*6&FIUcd#1<{nuYSZv zOf5_Q86~PW(eONVW>)F(JD0YP--R0cm@QdqN~$-S13HiIWmNcP7-soQYSL zcNO_PvDCztB80)fC+g@0!Hg$rx3RK6?0)iYl_80L-0R7^?hkp&vg`5GQqhZVth^bh zh{EVpFO7Y-5UC8xQ;VONk~}&&v0fvn`pi-f^v^5-LHCj1vr;R4 zq7?;$5V%;-X$`_AL8vVF>m;wr8jX$^gacYqLBLNTHfVJfwD>+SRCfxW^T+}VL>6no zw~aNT@_7=WlMFt3gRfq&=*%`BL9dhal1?wwbodQ}?rp3I!7oUJAnCldg0Hv5NAMOT zt)#0l-Dd{uZDZ{w6$%vuQPB5`7yuR8S{spXpnF^E+}eA!&2%O-Gl%U8v4S5e!=e z%Xb3$Z566w#ZmhNpRMrJZnan0j(%~1uMn&aFjhIMZG0ZTw?sX}dR9mRz72=J*%^^PZ1WBkN)Dis9tD%=f zyop4@gQRSY2LDZ&P?J;^EF?_mi};q1aKVm+HtZE4v_g3SA$mGf8sfAP8jvx%c4CCF z6@Tf{4fXXiwD?KZa;*?TLUf_pu7(i39W${@Atp@wiLSHeJiY{JCYg|p?aL>c+5uft zyGZz_1gzn3xk$1q`#V}w8)Q$GG=)tBP54wv<3=1hP13Y#iqB>62-0%I@N7x*2yy02 zNn>w@{47bc1~GgN+9U2otk+!7teGomCLzw8CuvS0?wv1bg6ThaDv&fo5r-mfM%;_2 zi4!#JKc(VB061SHg~O>C*53Fx_M)<_{Sc;STRY+B+DEdjt?`3t^Gxd^{2X=FOsh!n zGrBKxtljX_z~?#E##$8X%t4pwFlUan8`Pd_HDdV+mQ9mu(#K7urPCpHF0&}$aBD6a zemIXA#?3=RXPM#BdDedV8~7N?0gvZddts!u^O@@^4$nDs$z#edIlSS}X8}`gbQ~z#?ljF;ze{?}|5t)@!5=Tv?3lmrCqM z*7meVrx&rv=ZdgnuRzoi>w5gt5vP}658QyLrO4fY=}VFGgX2rBL(rklGR&by4Z@-t zV9qk@=NPpHus)j(G@5b_tm#CE{TAANY<)p)LEH*tZh#uOfVy1@XUYgn3DYcN1E99YBB zjB=th9kQI(udxZCpP|QePgmT4tj}1u;~b(sX9=A9+`1Zb&-%jJl6K6tFRi6yv9j$e zYmk8A@o$(*)LOKi4(HZdubHO1)UMsN4#R(07T&fVZD&F1dem0HN1(L-4RC;pKb8$g z=mr+)_y(4I)JBwUz`2dqd8Suy)d5cY*7~(+@)K3GZNe#nr#m*W(b={M@istZQrq4Q@_JbDu7+zu`Ub!o+-1wN7MdORny~K8?^%Q`AUTsJP3lim}^J+~}i<1yoFYUlngr z@yph#821B;ZSm1DZ_d&mSOpKL)-O%fwpFk>S+G<=G8rCFxCL#uBSgWf?byZ}@Mb%D zTuE0w`uxb^Z2ZyM&Fu0FO(FjOju|SiqAegh44bZK4^R1|5SGE;Z0T9J|{GV0|r~OHx-5;Rf9Z?v_O$6fmSG3Ae2`M zCPh}oV9Lx-O(sdQlk+pvpM=!U5U!3cLvoJ5VJ~ew0^Uk$0j4)vX;70X zUy{k)WZI>-)Y8z;O_T6rxJ931`leFyQ3y&U?@_pY7e$XkKnCT00gy|TU%;MnY6B(* z@$$RKB{$icVY-{jn@z9D-r6|T@}+4LsQbP|&-r9HhH_MNuQpI_asowT{V{~Cz^ZjY zkvgtYT^eXOj=9^6M@Td+#Vyd{r-l|&t#Jch=oi#p{dGG02;^5#kx7kTp?8QZUz?2=;y@7I0fVi2wCrq`n`FLEGBd99!3(!i2lPV|>0A)*nGBTcm&?1^IKs{BRQj@@N z8rV#lDL|0Cr;#8Sq%&}h?}^LypTUAVo^0Phe>s(Z18JKnB*0R#wE{S)5 zH!J>&rbi|GzK{Gp!ikJ*`2ju`kmZtz#K2vG9v2zI&>AAA0Dh_mkX^UM$Jl%s^22w~ zGnXMhks2=}y%NdwBd7&`rTssGigo2DtmmU{ni!S*WSS^#poX8c=@wC)cSqDt<|~Ln z0sc#f81zJJiwbG=6?J|$UQzihSCL3fX>rwVftKTaOu=7D%|H=-%Qce%+k@B8IOM7p z=2pt+K%-spbYP0a_AgD>k>AmlIEUp1v=`wHn~?T<6gQ;Y4KV{2Yb2~XH(*6NS$~G) zoTuVecm!(vmnOzYL4iu4`0!>#q1Q^DD3Yj|GHyabGnE6#k%4i!?Kjm$&D*Iu8Rl-On&^7AL$=%(_bZ@R zsm5+9aCU>p%&x|IK}BIpfRqms7^77QY$8&tK7l=s$(Cwh$FNd#7?{}U*%KKynG{S^ z`($)yVkr)FXH)4&57vXm^kCD_?CHToF>30;-UQ~7S)Sg$m-fr-J)p%s)xM1yu=IjQ zo2j@L6Fa76U~&f@ol(6d>n$p)=N3@CU&Z4Y1S$o{YD8lLd5o~3jxu^Pq^r^>00cRc zz>`CPB(?)sK{5n{V~Nn80?Dda<87d(CTPm;BIj-FJb3LUwiZ93*l0peX{b`n8H#uV zZSKQ5@rdT;6u5f#0LGMSDQv7H^{0%!5Y}HQ@5=~>#Njk(0NV;N4FlL@tO3S5*m%9f z$)3t;^=(V&W-8041^9=@wBSxQ51Y8aotiCoslcg$dJXWqRiaA+4H__8RAR9P8Z}@U zq!QgKP?`rZtP~b%y9dKir(_IfKS&rR%TN&_sviosZGm_+`7lk10AXqvh9HC$|GjLk zUbcM_PaxxPB*)(2NDlla_(T-Oz;LkdQ;ccs4oNzsSkoB}iD9LEB-+NpRP%&}ABI52g@`q;@b9?5E_z<9OMn1#meanlrM7V9p_ zfjCaZ*)Zb}9n8kKEhYIOU@eN{A$Gr{kKReIPGI?%!=VZ6E!nKZ!%{vG9t0^l2YtfI z{2YeOhWUKFwQ>^j-jGJ;Cb7R@HmsY>4$D;!Yw1=>j)#$;O>C|%?`wFW_Xd0%XlQQkN;u{z(YARz-pzHohNst~?*+Z=_&8N|A9+e8Sr1f+|t@Tm(Ku=6M+CD%v*>;n_#h zeD)_Sx8?J}Qb@u1P}8EgA7R}jY}D613e-la3t-_HaxGx9^=<3uqXle=l&KgC#H0>T z)j~Fxb{8TGlNO=Qlqm&^gt|oXF9yt|=wcYNvAbqWD-{$X{&G6i6taAMdmAM_hWe98 z^^bwsL&nDug#fu8XNR#H%X|Wg)5-G$ib)P-I1#U8WrGuGD`NX3dYCEWDfSsK!xCUY zax8%|_X#Z?ofHsM?0%N2v2`w02c=#E{Au=~y!}Evbit<)cvpHH%~%HBR{VcFP^0nq zDj}d^(q^~-i^$_*3bMrZ40ubaQUmSJh#Eze&%zSRRL$)$MV^HZIRCGJJns=ri<_b= zR4tAoP#xdJss19kZKjSQ%(Znfi%`CQ%ihLTXvpsvHslvI-b8W(MNS?Pz^Cx%*oWFG zI)qw^)l9UmM7V}18&--Tbt~o1BNU=0tYVMqv4zN8!>iX~;|RLxVfk|Eh`9R&FJYO?=t7NULXF}qV>rj+;I;vt7SJI9iiy9>YK`@= zXk?Dn={{7NUS<<8CvMjwUq30zov5Y*V$Ex=lF4vB1@;MvTLGmg}PmoT7eGjE*|kHqoJMjIv{a%^~H%g9(Sa#eu~ zD@PUUlrv*gTyS`om7&}?cCcF6drITQ3A7qr4Hhke*b!8#UF$)`(rEM{P+@ZU*kLN! ziRCzJC(A-vTDOx;rlegU91(;Kl)MYpd#PX-N)YDOE(j?j`)-J?i|H?;s@*CzssV=| z8XBp}4^KL&payLy4>ce*kfE0C!Y-n&mbJpU$~|ndJpVzRu5yu17ogA{He1g5AZ~wl z9ZDkJi>Sl&p;u0b&7hLAm;I(UP9lXLVNAK=`-r_Qi>Q4fmSMNzYGmCLP}GW>u&Cf< z)C8_pvVAUq;`tmVAb8D3)j(LkP|HN{3sC!$wV9nloAFDv&8dNU4e(sKn~(LhiG8DFc!at(wuU^{_*#n}@g3s10#^yeVs)Nuk4$2G+u zntnQqrs|-&sf+|w;Z-M9Ink5YmSR7C3RoFgPiq=A5Y#}%8I02QpS5^~sr-z}6Via~ z8x^b6K)VKVT2-P~0}%l#$bOdXplKl((jx>Le-?i&#$V#F7{Y=y=Nt%0=g_p^Jj`Eu z4#hK!^BLk=j`NvX3+m4c!3zJDJt*}K<1%E+1U#C*Qm4zPR~ELhL`mANI4_8zS4NHB z!R){&yv~5jB5tx=gdi6c3*e-NiztDZ0PVmI5&s@J=A=def{Nz{=t9*DU1Il$fi_-N zy>VWKK^BsKMCyf=z>i{s5T^Q{)Q!A7BK9a5%GL;5h%2BO@#HgHg%Q>+wBV{LDxd-5 zHBIm})cg5#@EV(H%#N`>j!Jcu`gULl9pvm_wY2;?!ZY|fn`m^$cnaaWgH~UM5IZ$p zNAHcl=sigpazkYNi6}CD4wXk?$i7%Rjv4}OjGL^=^KkyH{F^}{Ow=7+?0$nqeqLTsTbJ;$l58^=I*;}iArXqw)Q*U0A4 zT|r4ew+bpq;CXV(_Zqc=0ttKv?KPm=3Im@=wir+0dBPKCYr z1XR7MUf{M-v=@wuUP2vNtkb#3aSNyc@(bW4gApK?3Iym-0!EI1|7g6Q{`*#r)$snf z21^ng`63zSpH71R{6iX)%=2+&&z&r~E6vG#yr?qV#3u__z+f(-Stk4@>xaeNXsE0*yZ`qFs*0FDa> z$0OpnF_OiEDTd~t}sTiP7y+IDxb|kmby8Cv--I^j46v@IzznqER@+S8iGz)C7JmvX#k0`X zK@GF`553)}?Hsq5vj0P;3+w2k+58c3nCE~aO0GG4vT=K+X4JF2@U%Z2oTIwK9grI# zmjg2a0m%n;jRN^d-aw4Kf{b%Ptx%kE#Via{)jXg$Vb6n^hm_p;{O>q`lVJhRGX`UQ zreptSq{0Q@2$O$-I%viM2sJzqPa&s@9*Cp$1*%ZKkguhS3waOp^DacBFBYnQM;5}` zWXfHH3@cKq7V)=5+;R(5AH0QdGMm~9F9j|0Q8+W!P#IT@UMN3sK< zirBCeEYPM1)+DE<{YeOND9$JOhr&_I5>=900F3hz*dOUK*t%4udX~bJr8MMe%rR^V zo(8d%tjqYD#--4bg9Rrb?)y>mGPJnJx*P!KoaMq)#pV(@Q%X6{K=j5~Xs}2;BL-RV zK8ryHv!O`sQ&5CCSEd+$%a2L26uZe&M(w{t>jlbr4j@tSJ_jaa>VukN|AGlYn!ggm zfNkMQaM&rj5~G0w?DPCJyyQylt3b6<&T4>k@~&2gD!N*zBLD9}EF;4jKEY@}h3Pv{ zr}HCjP2^aEDTf%Z0fSp{{6QqfKBdx)-g0Bt5Jz7?bC?`!5!E17t%Vsu3a?csVnGR9 zo_|yueq25-L5Jd{rXRS5b^_@mW4|lPmnT(w(?u{Y{sZY>M4LI*_Ddny z0zL8~G_R%qdXZ1*eLEtsT=c=Gq=b5UennecN{@Lk%RRJH1D8E~T+eg}7N2b|(E~3* zQBF+JK0JIMx3;8=DqiA~3voj}?{kg4AKq_Cc68GX#y1;ZJcAJFJ*YN^}2H%MJ5{IXo^3?X%Wfkb+u;govej0BW zh)*0Y*3D4y!SGdl;&5C3Y!x393rGy&X$v|S;wg6?XwmfRlCo63savP0@PBc-9^%vc zKDS@vJMmtOf1Ad4I~AVeDSa2mUX&1{D?V{JkT#-O%2Isi_|?5LNnZR^RVgJyr>ZcChIsqjpB(q){kUyPk++X)Bi@r< zo0dX`74NQkw}gs^r{vC@Q9ZAEN%e~ARn;Zcf2@AJdRujM^`7eYs}EFvTz$OyboIB@ zm#VK->wHPR+kFFlgMDefF}^o^+kAU`@B0q;KK32)9rvB~;pbO<*L=F219uOm4H+rf zchB&z@W1Zg<3HlR-=qUQCQJvB#aF4gFc^w#x*H*{h|%2|3OJ>|Y0I{bna qZuINujgcvX1!)9bNKg4hN>h{(DF%sd8J%*s{#uQ4Ze&Wo-v0wB@rcs^ diff --git a/src/eSync.erl b/src/eSync.erl index 9b3056d..76df125 100644 --- a/src/eSync.erl +++ b/src/eSync.erl @@ -11,6 +11,8 @@ -define(LOG_ON(Val), Val == true; Val == all; Val == skip_success; is_list(Val), Val =/= []). -define(Log, log). +-define(baseDir, baseDir). +-define(monitorExt, monitorExt). -define(compileCmd, compileCmd). -define(extraDirs, extraDirs). -define(descendant, descendant). @@ -20,7 +22,9 @@ -define(isJustMem, isJustMem). -define(debugInfoKeyFun, debugInfoKeyFun). --define(DefCfgList, [{?Log, all}, {?compileCmd, undefined}, {?extraDirs, undefined}, {?descendant, fix}, {?onMSyncFun, undefined}, {?onCSyncFun, undefined}, {?swSyncNode, false}, {?isJustMem, false}, {?debugInfoKeyFun, undefined}]). +-define(ExtList, [".hrl", ".erl", ".beam", ".dtl", ".lfe", ".ex", ".config"]). + +-define(DefCfgList, [{?Log, all}, {?baseDir, "./"}, {?monitorExt, ?ExtList}, {?compileCmd, undefined}, {?extraDirs, undefined}, {?descendant, fix}, {?onMSyncFun, undefined}, {?onCSyncFun, undefined}, {?swSyncNode, false}, {?isJustMem, false}, {?debugInfoKeyFun, undefined}]). -define(esCfgSync, esCfgSync). -define(rootSrcDir, <<"src">>). @@ -160,8 +164,18 @@ init(_Args) -> handleAfter(?None, waiting, State) -> %% 启动port 发送监听目录信息 + {AddExtraSrcDirs, AddOnlySrcDirs, OnlySrcDirs, DelSrcDirs} = mergeExtraDirs(false), + AddExtraStr = string:join([filename:nativename(OneDir) || OneDir <- AddExtraSrcDirs], "|"), + AddOnlyStr = string:join([filename:nativename(OneDir) || OneDir <- AddOnlySrcDirs], "|"), + OnlyStr = string:join([filename:nativename(OneDir) || OneDir <- OnlySrcDirs], "|"), + DelStr = string:join([filename:nativename(OneDir) || OneDir <- DelSrcDirs], "|"), + AllStr = string:join([AddExtraStr, AddOnlyStr, OnlyStr, DelStr], "\r\n"), + + BaseDirStr = filename:nativename(?esCfgSync:getv(?baseDir)), + MonitorExtStr = string:join(?esCfgSync:getv(?monitorExt), "|"), + + Opts = [{packet, 4}, binary, exit_status, use_stdio, {args, [BaseDirStr, MonitorExtStr, AllStr]}], PortName = fileSyncPath("fileSync"), - Opts = [{packet, 4}, binary, exit_status, use_stdio], Port = erlang:open_port({spawn_executable, PortName}, Opts), {kpS, State#state{port = Port}, {sTimeout, 4000, waitConnOver}}. @@ -195,7 +209,7 @@ handleCast(miRescan, _, State) -> handleCast(_Msg, _, _State) -> kpS_S. -handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls, configs = Configs, beams = Beams, onMSyncFun = OnMSyncFun, onCSyncFun = OnCSyncFun, swSyncNode = SwSyncNode} = State) -> +handleInfo({_Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls, configs = Configs, beams = Beams, onMSyncFun = OnMSyncFun, onCSyncFun = OnCSyncFun, swSyncNode = SwSyncNode} = State) -> case Status of running -> FileList = binary:split(Data, <<"\r\n">>, [global]), @@ -230,18 +244,9 @@ handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls _ -> case Data of <<"init">> -> - %% port启动成功 先发送监听目录配置 - {AddExtraSrcDirs, AddOnlySrcDirs, OnlySrcDirs, DelSrcDirs} = mergeExtraDirs(false), - AddExtraStr = string:join([filename:nativename(OneDir) || OneDir <- AddExtraSrcDirs], "|"), - AddOnlyStr = string:join([filename:nativename(OneDir) || OneDir <- AddOnlySrcDirs], "|"), - OnlyStr = string:join([filename:nativename(OneDir) || OneDir <- OnlySrcDirs], "|"), - DelStr = string:join([filename:nativename(OneDir) || OneDir <- DelSrcDirs], "|"), - AllStr = string:join([AddExtraStr, AddOnlyStr, OnlyStr, DelStr], "\r\n"), - erlang:port_command(Port, AllStr), - ?logSuccess("eSync connect fileSync success..."), %% 然后收集一下监听目录下的src文件 {BSrcs, BHrls, BConfigs, BBeams} = collSrcFiles(true), - ?logSuccess("eSync coll src files over..."), + ?logSuccess("eSync connect fileSync success and coll src files over..."), {nextS, running, State#state{srcFiles = BSrcs, hrlFiles = BHrls, configs = BConfigs, beams = BBeams}, {isHib, true}}; _ -> ?logErrors("error, receive unexpect port msg ~p~n", [Data]), @@ -353,7 +358,7 @@ tryGetModOpts(Module) -> Options7 = lists:keyreplace(debug_info_key, 1, Options6, debugInfoKeyFun()), {ok, Options7} catch _ExType:_Error -> - undefiend + undefined end. tryGetSrcOpts(SrcDir) -> @@ -564,11 +569,7 @@ getSrcDir(Dir) -> getSrcDir(_Dir, 0) -> undefined; getSrcDir(Dir, Ctr) -> - HasCode = filelib:wildcard("*.erl", Dir) /= [] orelse - filelib:wildcard("*.hrl", Dir) /= [] orelse - filelib:wildcard("*.dtl", Dir) /= [] orelse - filelib:wildcard("*.lfe", Dir) /= [] orelse - filelib:wildcard("*.ex", Dir) /= [], + HasCode = filelib:wildcard("*.{erl,hrl,ex,dtl,lfe}", Dir) /= [], if HasCode -> {ok, Dir}; true -> getSrcDir(filename:dirname(Dir), Ctr - 1) @@ -655,10 +656,18 @@ mergeExtraDirs(IsAddPath) -> lists:foldl(FunMerge, {[], [], [], []}, ExtraList) end. --define(RegExp, <<".*\\.(erl|hrl|beam|config|dtl|lfe|ex)$">>). +toBinary(Value) when is_list(Value) -> list_to_binary(Value); +toBinary(Value) when is_binary(Value) -> Value. + +regExp() -> + % <<".*\\.(erl|hrl|beam|config|dtl|lfe|ex)$">> + <<_Del:8, RegExpStr/binary>> = << <<"|", (toBinary(Tail))/binary>> || [_Dot | Tail] <- ?esCfgSync:getv(?monitorExt)>>, + <<".*\\.(", RegExpStr/binary, ")$">>. + +-define(RegExp, regExp()). collSrcFiles(IsAddPath) -> {AddExtraSrcDirs, AddOnlySrcDirs, OnlySrcDirs, DelSrcDirs} = mergeExtraDirs(IsAddPath), - CollFiles = filelib:fold_files(filename:absname(<<"./">>), ?RegExp, true, + CollFiles = filelib:fold_files(filename:absname(toBinary(?esCfgSync:getv(?baseDir))), ?RegExp, true, fun(OneFile, {Srcs, Hrls, Configs, Beams} = Acc) -> case isOnlyDir(OnlySrcDirs, OneFile) andalso (not isDelDir(DelSrcDirs, OneFile)) of true ->