mad_app.erl 1.1 KB

1234567891011121314151617181920212223242526272829
  1. -module(mad_app).
  2. -copyright('Sina Samavati').
  3. -compile(export_all).
  4. app_src_to_app(Filename) -> filename:basename(Filename, ".app.src") ++ ".app".
  5. validate_property({modules, _}, Modules) -> {modules, Modules};
  6. validate_property(Else, _) -> Else.
  7. compile(File,_Inc,Bin,_Opt) ->
  8. AppFile = filename:join(Bin, app_src_to_app(File)),
  9. Compiled = mad_compile:is_compiled(AppFile, File),
  10. if Compiled =:= false ->
  11. io:format("Writing ~s~n\r", [AppFile]),
  12. BeamFiles = filelib:wildcard("*.beam", Bin),
  13. Modules = [list_to_atom(filename:basename(X, ".beam")) || X <- BeamFiles],
  14. [Struct|_] = mad_utils:consult(File),
  15. {application, AppName, Props} = Struct,
  16. Props1 = add_modules_property(Props),
  17. Props2 = [validate_property(X, Modules) || X <- Props1],
  18. Struct1 = {application, AppName, Props2},
  19. file:write_file(AppFile, io_lib:format("~p.~n", [Struct1])),
  20. ok;
  21. true -> ok end.
  22. add_modules_property(Properties) ->
  23. case lists:keyfind(modules, 1, Properties) of
  24. {modules, _} -> Properties;
  25. _ -> Properties ++ [{modules, []}] end.