Browse Source

重命令 and 删除依赖

master
SisMaker 4 years ago
parent
commit
b5dba2bcd0
11 changed files with 2521 additions and 43 deletions
  1. +11
    -9
      README.md
  2. +2
    -2
      eSync.sample.config
  3. +1
    -2
      include/eSync.hrl
  4. +2
    -5
      rebar.config
  5. +2
    -2
      src/eSync.app.src
  6. +4
    -4
      src/eSync.erl
  7. +2
    -2
      src/eSync_app.erl
  8. +1
    -1
      src/eSync_sup.erl
  9. +13
    -13
      src/sync/esSyncSrv.erl
  10. +3
    -3
      src/sync/esUtils.erl
  11. +2480
    -0
      src/sync/es_gen_ipc.erl

+ 11
- 9
README.md View File

@ -1,4 +1,4 @@
# erlSync
# eSync
otp21.2+
Erlang即时重新编译和重新加载!
## 基于 [fsnotify](https://github.com/fsnotify/fsnotify) 跨平台文件系统通知。
@ -7,27 +7,29 @@
# 特点
本项目实现了自带编译与加载功能,另外支持额外的编译命令,但是执行额外的编译命令是通过os:cmd(),会阻塞VM不是很建议使用.
启动后,erlSync会收集监听目录下的源文件和编译选项等的信息。
启动后,eSync会收集监听目录下的源文件和编译选项等的信息。
不仅适用于开发模式,也可以在生产环境中运行。
注意:linux下拉取项目后 需要给priv目录下的执行文件添加执行权限
# 使用
启动自动编译与加载
erlSync:run().
eSync:run().
暂停自动编译与加载
erlSync:pause().
eSync:pause().
停止自动编译应用
eSync:stop().
启动或者关闭集群同步加载
erlSync:swSyncNode(TrueOrFalse).
eSync:swSyncNode(TrueOrFalse).
设置编译与加载日志提示
erlSync:setLog(Val).
eSync:setLog(Val).
设置加载后的钩子函数(支持匿名函数, {Mod, Fun}(Fun函数只有一个参数)格式, 以及他们的列表组合)
erlSync:setOnsync(FunOrFuns).
eSync:setOnsync(FunOrFuns).
# 配置说明
参见erlSync.sample.config
参见eSync.sample.config
默认配置为
[
{erlSync,
{eSync,
[
{listenPort, 12369},
{compileCmd, undefined},

erlSync.sample.config → eSync.sample.config View File

@ -1,5 +1,5 @@
[
{erlSync, [
{eSync, [
%% 接受fileSync的监听端口
{listenPort, 12369},
@ -21,7 +21,7 @@
%% -type srcDirDescr() :: { Dir :: file:filename(), [Options :: compile_option()]}.
%% 默认值:undefined 根据当前工作目录 和 已经加载的模块做来得出需要扫描的目录
%%示例: {extraDirs, [{add, [{"./_build/default/lib/erlGbh", []}]}, {only, [{"./", []}]}, {del, [{"./_build", []}]}]}.
%%{extraDirs, [{add, [{"./_build/default/lib/erlGbh", []}, {"./_build/default/lib/erlSync/ebin", []}]}, {only, [{"./", []}]}, {del, [{"./_build", []}]}]}
%%{extraDirs, [{add, [{"./_build/default/lib/erlGbh", []}, {"./_build/default/lib/eSync/ebin", []}]}, {only, [{"./", []}]}, {del, [{"./_build", []}]}]}
{extraDirs, [{strategy(), [srcDirDescr()]}]},
%% 这个参数用来设置 怎么处理 当beam文件的源文件目录不是当前工作的子目录时的情况

include/erlSync.hrl → include/eSync.hrl View File

@ -19,5 +19,4 @@
-define(CfgList, [{?Log, all}, {?listenPort, 12369}, {?compileCmd, undefined}, {?extraDirs, undefined}, {?descendant, fix}]).
-define(esCfgSync, esCfgSync).
-define(rootSrcDir, <<"src">>).
-define(esRecompileCnt, '$esRecompileCnt').
-define(rootSrcDir, <<"src">>).

+ 2
- 5
rebar.config View File

@ -1,10 +1,7 @@
{erl_opts, [no_debug_info]}.
{deps, [
{erlGbh, ".*", {git, "http://47.108.26.175:53000/SisMaker/erlGbh.git", {branch, "master"}}}
]}.
{deps, []}.
{shell, [
% {config, "config/sys.config"},
{apps, [erlSync]}
{apps, [eSync]}
]}.

src/erlSync.app.src → src/eSync.app.src View File

@ -1,8 +1,8 @@
{application, erlSync,
{application, eSync,
[{description, "erlang code auto compile and loader"},
{vsn, "0.1.0"},
{registered, []},
{mod, {erlSync_app, []}},
{mod, {eSync_app, []}},
{applications, [kernel, stdlib, syntax_tools, compiler]},
{env, []},
{modules, []},

src/erlSync.erl → src/eSync.erl View File

@ -1,4 +1,4 @@
-module(erlSync).
-module(eSync).
-export([
start/0,
@ -15,10 +15,10 @@
]).
start() ->
application:ensure_all_started(erlSync).
application:ensure_all_started(eSync).
stop() ->
application:stop(erlSync).
application:stop(eSync).
run() ->
case start() of
@ -26,7 +26,7 @@ run() ->
esSyncSrv:unpause(),
ok;
{error, Reason} ->
Msg = io_lib:format("start erlSync error:~p~n", [Reason]),
Msg = io_lib:format("start eSync error:~p~n", [Reason]),
esUtils:logErrors(Msg)
end.

src/erlSync_app.erl → src/eSync_app.erl View File

@ -1,10 +1,10 @@
-module(erlSync_app).
-module(eSync_app).
-behaviour(application).
-export([start/2, stop/1]).
start(_StartType, _StartArgs) ->
erlSync_sup:start_link().
eSync_sup:start_link().
stop(_State) ->
ok.

src/erlSync_sup.erl → src/eSync_sup.erl View File

@ -1,4 +1,4 @@
-module(erlSync_sup).
-module(eSync_sup).
-behaviour(supervisor).
-export([

+ 13
- 13
src/sync/esSyncSrv.erl View File

@ -1,7 +1,7 @@
-module(esSyncSrv).
-behaviour(gen_ipc).
-behaviour(es_gen_ipc).
-include("erlSync.hrl").
-include("eSync.hrl").
-compile(inline).
-compile({inline_size, 128}).
@ -20,7 +20,7 @@
swSyncNode/1
]).
%% gen_ipc callbacks
%% es_gen_ipc callbacks
-export([
init/1,
handleCall/4,
@ -44,21 +44,21 @@
%% ************************************ API start ***************************
rescan() ->
gen_ipc:cast(?SERVER, miRescan),
es_gen_ipc:cast(?SERVER, miRescan),
esUtils:logSuccess("start rescaning source files..."),
ok.
unpause() ->
gen_ipc:cast(?SERVER, miUnpause),
es_gen_ipc:cast(?SERVER, miUnpause),
ok.
pause() ->
gen_ipc:cast(?SERVER, miPause),
esUtils:logSuccess("Pausing erlSync. Call erlSync:run() to restart"),
es_gen_ipc:cast(?SERVER, miPause),
esUtils:logSuccess("Pausing eSync. Call eSync:run() to restart"),
ok.
curInfo() ->
gen_ipc:call(?SERVER, miCurInfo).
es_gen_ipc:call(?SERVER, miCurInfo).
setLog(T) when ?LOG_ON(T) ->
esUtils:setEnv(log, T),
@ -75,18 +75,18 @@ getLog() ->
?esCfgSync:getv(log).
swSyncNode(IsSync) ->
gen_ipc:cast(?SERVER, {miSyncNode, IsSync}),
es_gen_ipc:cast(?SERVER, {miSyncNode, IsSync}),
ok.
getOnsync() ->
gen_ipc:call(?SERVER, miGetOnsync).
es_gen_ipc:call(?SERVER, miGetOnsync).
setOnsync(Fun) ->
gen_ipc:call(?SERVER, {miSetOnsync, Fun}).
es_gen_ipc:call(?SERVER, {miSetOnsync, Fun}).
%% ************************************ API end ***************************
start_link() ->
gen_ipc:start_link({local, ?SERVER}, ?MODULE, ?None, []).
es_gen_ipc:start_link({local, ?SERVER}, ?MODULE, ?None, []).
%% status :: waiting | running | pause
init(_Args) ->
@ -200,7 +200,7 @@ handleInfo({inet_async, LSock, _Ref, Msg}, _, #state{sockMod = SockMod} = State)
DelStr = string:join([filename:nativename(OneDir) || OneDir <- DelSrcDirs], "|"),
AllStr = string:join([AddStr, OnlyStr, DelStr], "\r\n"),
gen_tcp:send(Sock, AllStr),
esUtils:logSuccess("erlSync connect fileSync success..."),
esUtils:logSuccess("eSync connect fileSync success..."),
case ?esCfgSync:getv(?compileCmd) of
undefined ->
%% src文件

+ 3
- 3
src/sync/esUtils.erl View File

@ -1,6 +1,6 @@
-module(esUtils).
-include("erlSync.hrl").
-include("eSync.hrl").
-compile(inline).
-compile({inline_size, 128}).
@ -434,7 +434,7 @@ isMatchDir([OneDir | ReplaceDirs], SrcDir) ->
end.
getEnv(Var, Default) ->
case application:get_env(erlSync, Var) of
case application:get_env(eSync, Var) of
{ok, Value} ->
Value;
_ ->
@ -442,7 +442,7 @@ getEnv(Var, Default) ->
end.
setEnv(Var, Val) ->
ok = application:set_env(erlSync, Var, Val).
ok = application:set_env(eSync, Var, Val).
logSuccess(Message) ->
canLog(success) andalso error_logger:info_msg(lists:flatten(Message)).

+ 2480
- 0
src/sync/es_gen_ipc.erl
File diff suppressed because it is too large
View File


Loading…
Cancel
Save