diff --git a/src/eSync.erl b/src/eSync.erl index 0ca9bcf..123efa8 100644 --- a/src/eSync.erl +++ b/src/eSync.erl @@ -8,9 +8,12 @@ curInfo/0, setLog/1, getLog/0, - getOnsync/0, - setOnsync/0, - setOnsync/1, + getOnMSync/0, + setOnMSync/0, + setOnMSync/1, + getOnCSync/0, + setOnCSync/0, + setOnCSync/1, swSyncNode/1 ]). @@ -47,14 +50,23 @@ setLog(Val) -> getLog() -> esSyncSrv:getLog(). -getOnsync() -> - esSyncSrv:getOnsync(). +getOnMSync() -> + esSyncSrv:getOnMSync(). -setOnsync() -> - esSyncSrv:setOnsync(undefined). +setOnMSync() -> + esSyncSrv:setOnMSync(undefined). -setOnsync(Fun) -> - esSyncSrv:setOnsync(Fun). +setOnMSync(Fun) -> + esSyncSrv:setOnMSync(Fun). + +getOnCSync() -> + esSyncSrv:getOnCSync(). + +setOnCSync() -> + esSyncSrv:setOnCSync(undefined). + +setOnCSync(Fun) -> + esSyncSrv:setOnCSync(Fun). diff --git a/src/sync/esSyncSrv.erl b/src/sync/esSyncSrv.erl index f354c95..48b0c96 100644 --- a/src/sync/esSyncSrv.erl +++ b/src/sync/esSyncSrv.erl @@ -15,8 +15,10 @@ setLog/1, getLog/0, curInfo/0, - getOnsync/0, - setOnsync/1, + getOnMSync/0, + setOnMSync/1, + getOnCSync/0, + setOnCSync/1, swSyncNode/1 ]). @@ -39,7 +41,8 @@ , hrlFiles = #{} :: map() , configs = #{} :: map() , beams = #{} :: map() - , onSyncFun = undefined + , onMSyncFun = undefined + , onCSyncFun = undefined , swSyncNode = false , port = undefined }). @@ -80,11 +83,17 @@ swSyncNode(IsSync) -> es_gen_ipc:cast(?SERVER, {miSyncNode, IsSync}), ok. -getOnsync() -> - es_gen_ipc:call(?SERVER, miGetOnsync). +getOnMSync() -> + es_gen_ipc:call(?SERVER, miGetOnMSync). -setOnsync(Fun) -> - es_gen_ipc:call(?SERVER, {miSetOnSync, Fun}). +setOnMSync(Fun) -> + es_gen_ipc:call(?SERVER, {miSetOnMSync, Fun}). + +getOnCSync() -> + es_gen_ipc:call(?SERVER, miGetOnCSync). + +setOnCSync(Fun) -> + es_gen_ipc:call(?SERVER, {miSetOnCSync, Fun}). %% ************************************ API end *************************** start_link() -> @@ -103,10 +112,14 @@ handleAfter(?None, waiting, State) -> Port = erlang:open_port({spawn_executable, PortName}, Opts), {kpS, State#state{port = Port}, {sTimeout, 4000, waitConnOver}}. -handleCall(miGetOnsync, _, #state{onSyncFun = OnSyncFun} = State, _From) -> - {reply, OnSyncFun, State}; -handleCall({miSetOnSync, Fun}, _, State, _From) -> - {reply, ok, State#state{onSyncFun = Fun}}; +handleCall(miGetOnMSync, _, #state{onMSyncFun = OnMSyncFun} = State, _From) -> + {reply, OnMSyncFun, State}; +handleCall({miSetOnMSync, Fun}, _, State, _From) -> + {reply, ok, State#state{onMSyncFun = Fun}}; +handleCall(miGetOnCSync, _, #state{onCSyncFun = OnCSyncFun} = State, _From) -> + {reply, OnCSyncFun, State}; +handleCall({miSetOnCSync, Fun}, _, State, _From) -> + {reply, ok, State#state{onCSyncFun = Fun}}; handleCall(miCurInfo, _, State, _Form) -> {reply, {erlang:get(), State}, State}; handleCall(_Request, _, _State, _From) -> @@ -129,14 +142,14 @@ handleCast(miRescan, _, State) -> handleCast(_Msg, _, _State) -> kpS_S. -handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls, configs = Configs, beams = Beams, onSyncFun = OnSyncFun, 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]), %% 收集改动了beam hrl src 文件 然后执行相应的逻辑 {CBeams, CConfigs, CHrls, CSrcs, NewSrcs, NewHrls, NewConfigs, NewBeams} = esUtils:classifyChangeFile(FileList, [], [], #{}, #{}, Srcs, Hrls, Configs, Beams), - esUtils:fireOnsync(OnSyncFun, CConfigs), - esUtils:reloadChangedMod(CBeams, SwSyncNode, OnSyncFun, []), + esUtils:fireOnsync(OnCSyncFun, CConfigs), + esUtils:reloadChangedMod(CBeams, SwSyncNode, OnMSyncFun, []), case ?esCfgSync:getv(?compileCmd) of undefined -> LastCHrls = esUtils:collIncludeCHrls(maps:keys(CHrls), NewHrls, CHrls, #{}), diff --git a/src/sync/esUtils.erl b/src/sync/esUtils.erl index 19d1899..d664f93 100644 --- a/src/sync/esUtils.erl +++ b/src/sync/esUtils.erl @@ -939,12 +939,14 @@ classifyChangeFile([OneFile | LeftFile], Beams, Configs, Hrls, Srcs, ColSrcs, Co #{AbsFile := OldMTimeSec} -> case CurMTimeSec =/= OldMTimeSec andalso CurMTimeSec =/= 0 of true -> - classifyChangeFile(LeftFile, Beams, [AbsFile | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile := CurMTimeSec}, ColBeams); + CfgMod = erlang:binary_to_atom(filename:basename(AbsFile, <<".config">>), utf8), + classifyChangeFile(LeftFile, Beams, [CfgMod | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile := CurMTimeSec}, ColBeams); _ -> classifyChangeFile(LeftFile, Beams, Configs, Hrls, Srcs, ColSrcs, ColHrls, ColConfigs, ColBeams) end; _ -> - classifyChangeFile(LeftFile, Beams, [AbsFile | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile => CurMTimeSec}, ColBeams) + CfgMod = erlang:binary_to_atom(filename:basename(AbsFile, <<".config">>), utf8), + classifyChangeFile(LeftFile, Beams, [CfgMod | Configs], Hrls, Srcs, ColSrcs, ColHrls, ColConfigs#{AbsFile => CurMTimeSec}, ColBeams) end; <<".hrl">> -> AbsFile = filename:absname(OneFile),