Преглед изворни кода

ft: 格式化代码

master
SisMaker пре 4 година
родитељ
комит
fa8f013fd7
3 измењених фајлова са 16 додато и 8 уклоњено
  1. +9
    -2
      README.md
  2. +2
    -2
      src/sync/esSyncSrv.erl
  3. +5
    -4
      src/sync/esUtils.erl

+ 9
- 2
README.md Прегледај датотеку

@ -1,17 +1,23 @@
# eSync
otp21.2+
Erlang即时重新编译和重新加载!
## 基于 [fsnotify](https://github.com/fsnotify/fsnotify) 跨平台文件系统通知。
## 改造自 [sync](https://github.com/rustyio/sync)
## 封装的监听文件项目[fileSync](https://github.com/SisMaker/fileSync) 如果要自己构建执行文件, 拉取监听文件项目, 然后 go build 复制执行文件到该工程的 priv 目录即可
# 特点
本项目实现了自带编译与加载功能,另外支持额外的编译命令,但是执行额外的编译命令是通过os:cmd(),会阻塞VM不是很建议使用.
启动后,eSync会收集监听目录下的源文件和编译选项等的信息。
不仅适用于开发模式,也可以在生产环境中运行。
注意:linux下拉取项目后 需要给priv目录下的执行文件添加执行权限
# 使用
启动自动编译与加载
eSync:run().
暂停自动编译与加载
@ -24,8 +30,9 @@
eSync:setLog(Val).
设置加载后的钩子函数(支持匿名函数, {Mod, Fun}(Fun函数只有一个参数)格式, 以及他们的列表组合)
eSync:setOnsync(FunOrFuns).
# 配置说明
参见eSync.sample.config
默认配置为
[

+ 2
- 2
src/sync/esSyncSrv.erl Прегледај датотеку

@ -129,7 +129,7 @@ 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, onSyncFun = OnSyncFun, swSyncNode = SwSyncNode} = State) ->
case Status of
running ->
FileList = binary:split(Data, <<"\r\n">>, [global]),
@ -143,7 +143,7 @@ handleInfo({Port, {data, Data}}, Status, #state{srcFiles = Srcs, hrlFiles = Hrls
esUtils:recompileChangeSrcFile(maps:iterator(NReSrcs), SwSyncNode),
{kpS, State#state{srcFiles = NewSrcs, hrlFiles = NewHrls, configs = NewConfigs, beams = NewBeams}};
CmdStr ->
case maps:size(CSrcs) > 0 orelse CHrls =/= [] of
case maps:size(CSrcs) > 0 orelse CHrls =/= [] of
true ->
RetStr = os:cmd(CmdStr),
RetList = string:split(RetStr, "\n", all),

+ 5
- 4
src/sync/esUtils.erl Прегледај датотеку

@ -192,7 +192,7 @@ getFileType(Source) ->
determineIncludeDir(IncludeDir, BeamDir, SrcDir) ->
IncludeBase = filename:basename(IncludeDir),
case determineIncludeDirFromBeamDir(IncludeBase, IncludeDir, BeamDir) of
{ok, _Dir} = RetD -> RetD;
{ok, _Dir} = RetD -> RetD;
undefined ->
{ok, Cwd} = file:get_cwd(),
% Cwd2 = normalizeCaseWindowsDir(Cwd),
@ -222,7 +222,7 @@ determineIncludeDirFromBeamDir(IncludeBase, IncludeDir, BeamDir) ->
getRootSrcDirFromSrcDir(SrcDir) ->
NewDirName = filename:dirname(SrcDir),
BaseName = filename:basename(SrcDir),
case BaseName of
case BaseName of
?rootSrcDir ->
NewDirName;
_ ->
@ -564,7 +564,8 @@ printResults(_Module, SrcFile, [], []) ->
Msg = io_lib:format("~s Recompiled", [SrcFile]),
esUtils:logSuccess(lists:flatten(Msg));
printResults(_Module, SrcFile, [], Warnings) ->
formatErrors(fun esUtils:logWarnings/1, SrcFile, [], Warnings), io_lib:format("~s Recompiled with ~p warnings", [SrcFile, length(Warnings)]);
formatErrors(fun esUtils:logWarnings/1, SrcFile, [], Warnings),
io_lib:format("~s Recompiled with ~p warnings", [SrcFile, length(Warnings)]);
printResults(_Module, SrcFile, Errors, Warnings) ->
formatErrors(fun esUtils:logErrors/1, SrcFile, Errors, Warnings).
@ -977,5 +978,5 @@ dateTimeToSec(DateTime) ->
DateTime == 0 ->
0;
true ->
erlang:universaltime_to_posixtime(DateTime )
erlang:universaltime_to_posixtime(DateTime)
end.

Loading…
Откажи
Сачувај