diff --git a/src/sync/esScanner.erl b/src/sync/esScanner.erl index d4c35f6..7966210 100644 --- a/src/sync/esScanner.erl +++ b/src/sync/esScanner.erl @@ -434,7 +434,7 @@ errorNoFile(Module) -> Msg = io_lib:format("~p Couldn't load module: nofile", [Module]), esUtils:logWarnings([Msg]). -recompileSrcFile(SrcFile, _SwSyncNode) -> +recompileSrcFile(SrcFile, SwSyncNode) -> %% Get the module, src dir, and options... case esUtils:getSrcDir(SrcFile) of {ok, SrcDir} -> @@ -465,8 +465,14 @@ recompileSrcFile(SrcFile, _SwSyncNode) -> {ok, Errors, Warnings} end; undefined -> - Msg = io_lib:format("Unable to determine options for ~s", [SrcFile]), - esUtils:logErrors(Msg) + case esUtils:tryGetModOptions(Module) of + {ok, Options} -> + setOptions(SrcDir, Options), + recompileSrcFile(SrcFile, SwSyncNode); + _ -> + Msg = io_lib:format("Unable to determine options for ~s", [SrcFile]), + esUtils:logErrors(Msg) + end end; _ -> Msg = io_lib:format("not find the file ~s", [SrcFile]), diff --git a/src/sync/esUtils.erl b/src/sync/esUtils.erl index b2274e9..593e97e 100644 --- a/src/sync/esUtils.erl +++ b/src/sync/esUtils.erl @@ -16,7 +16,8 @@ logSuccess/1, logErrors/1, logWarnings/1, - getSystemModules/0 + getSystemModules/0, + tryGetModOptions/1 ]). getModSrcDir(Module) -> @@ -82,6 +83,26 @@ getModOptions(Module) -> {ok, []} end. +tryGetModOptions(Module) -> + try + Props = Module:module_info(compile), + BeamDir = filename:dirname(code:which(Module)), + Options1 = proplists:get_value(options, Props, []), + %% transform `outdir' + Options2 = transformOutdir(BeamDir, Options1), + Options3 = ensureInclude(Options2), + %% transform the include directories + Options4 = transformAllIncludes(Module, BeamDir, Options3), + %% maybe_add_compile_info + Options5 = maybeAddCompileInfo(Options4), + %% add filetype to options (DTL, LFE, erl, etc) + Options6 = addFileType(Module, Options5), + {ok, Options6} + catch _ExType:_Error:_Stacktrace -> + undefiend + end. + + transformOutdir(BeamDir, Options) -> [{outdir, BeamDir} | proplists:delete(outdir, Options)].