mad.erl 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. -module(mad).
  2. -copyright('Maxim Sokhatsky').
  3. -compile(export_all).
  4. -export([main/1]).
  5. main([]) -> help();
  6. main(Params) ->
  7. % io:format("Bundle: ~p~n\r",[escript:script_name()]),
  8. {Other,FP} = mad_utils:fold_params(Params),
  9. % io:format("Params: ~p~n\r",[FP]),
  10. case Other == [] of
  11. true -> skip;
  12. false -> io:format("Unknown Command or Parameter ~p~n\r",[Other]), help() end,
  13. Cwd = mad_utils:cwd(),
  14. ConfigFile = "rebar.config",
  15. ConfigFileAbs = filename:join(Cwd, ConfigFile),
  16. Conf = mad_utils:consult(ConfigFileAbs),
  17. Conf1 = mad_script:script(ConfigFileAbs, Conf, ""),
  18. Fun = fun({Name,Par}) -> ?MODULE:Name(Cwd, ConfigFile, Conf1, Par) end,
  19. lists:foreach(Fun, FP).
  20. %% fetch dependencies
  21. deps(Cwd, ConfigFile, Conf, Params) ->
  22. io:format("Deps Params: ~p~n",[Params]),
  23. case mad_utils:get_value(deps, Conf, []) of
  24. [] -> ok;
  25. Deps ->
  26. Cache = mad_utils:get_value(deps_dir, Conf, deps_fetch),
  27. case Cache of
  28. deps_fetch -> skip;
  29. Dir -> file:make_dir(Dir) end,
  30. FetchDir = mad_utils:get_value(deps_dir, Conf, ["deps"]),
  31. file:make_dir(FetchDir),
  32. mad_deps:fetch(Cwd, Conf, ConfigFile, Deps)
  33. end.
  34. %% compile dependencies and the app
  35. compile(Cwd, ConfigFile, Conf, Params) ->
  36. io:format("Compile Params: ~p~n\r",[Params]),
  37. mad_compile:'compile-deps'(Cwd, ConfigFile, Conf),
  38. mad_compile:'compile-apps'(Cwd, ConfigFile, Conf).
  39. %% reltool apps resolving
  40. plan(_Cwd,_ConfigFileName,_Config,Params) ->
  41. io:format("Plan Params: ~p~n",[Params]),
  42. mad_plan:main([]).
  43. repl(_Cwd,_ConfigFileName,_Config,Params) ->
  44. io:format("Repl Params: ~p~n",[Params]),
  45. mad_repl:main(Params).
  46. bundle(_Cwd,_ConfigFileName,_Config,Params) ->
  47. io:format("Tool Params: ~p~n",[Params]),
  48. Name = case Params of [] -> mad_utils:cwd(); E -> E end,
  49. mad_bundle:main(filename:basename(Name)).
  50. app(_Cwd,_ConfigFileName,_Config,Params) ->
  51. io:format("Create App Params: ~p~n",[Params]),
  52. mad_create:app(Params).
  53. lib(_Cwd,_ConfigFileName,_Config,Params) ->
  54. io:format("Create Lib Params: ~p~n",[Params]),
  55. mad_create:lib(Params).
  56. start(_Cwd,_ConfigFileName,_Config,Params) ->
  57. io:format("Start Params: ~p~n",[Params]),
  58. mad_run:start(Params).
  59. attach(_Cwd,_ConfigFileName,_Config,Params) ->
  60. % io:format("Attach Params: ~p~n",[Params]),
  61. mad_run:attach(Params).
  62. clean(_Cwd,_ConfigFileName,_Config,Params) ->
  63. io:format("Clean Params: ~p~n",[Params]),
  64. mad_run:clean(Params).
  65. stop(_Cwd,_ConfigFileName,_Config,Params) ->
  66. io:format("Stop Params: ~p~n",[Params]),
  67. mad_run:stop(Params).
  68. release(_Cwd,_ConfigFileName,_Config,Params) ->
  69. io:format("Release Params: ~p~n",[Params]),
  70. mad_release:main(Params).
  71. static(_Cwd,_ConfigFileName,Config,Params) ->
  72. io:format("Compile Static Params: ~p~n",[Params]),
  73. mad_static:main(Config, Params).
  74. help(Reason, Data) -> help(io_lib:format("~s ~p", [Reason, Data])).
  75. help(Msg) -> io:format("Error: ~s~n~n", [Msg]), help().
  76. help() ->
  77. io:format("VXZ MAD Build Tool version 1.0~n"),
  78. io:format("BNF: ~n"),
  79. io:format(" invoke := mad params~n"),
  80. io:format(" params := [] | run params ~n"),
  81. io:format(" run := command [ help | options ]~n"),
  82. io:format(" cmd := app | lib | deps | compile | release | bundle~n"),
  83. io:format(" clean | start | stop | attach | repl ~n"),
  84. halt().