mad.erl 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. -module(mad).
  2. -copyright('Maxim Sokhatsky').
  3. -include("mad.hrl").
  4. -compile(export_all).
  5. -export([main/1]).
  6. main([]) -> help();
  7. main(Params) ->
  8. {Other,FP} = mad_utils:fold_params(Params),
  9. unknown(Other),
  10. return(lists:any(fun(X) -> element(1,X) == error end,
  11. lists:flatten(
  12. lists:foldl(
  13. fun ({Name,Par},Errors) when length(Errors) > 0 -> [{error,Errors}];
  14. ({Name,Par},Errors) -> lists:flatten([errors((profile()):Name(Par))|Errors]) end, [], FP)))).
  15. deps(Params) -> mad_deps:deps(Params).
  16. compile(Params) -> mad_compile:compile(Params).
  17. app(Params) -> mad_static:app(Params).
  18. clean(Params) -> mad_run:clean(Params).
  19. start(Params) -> mad_run:start(Params).
  20. attach(Params) -> mad_run:attach(Params).
  21. stop(Params) -> mad_run:stop(Params).
  22. release(Params) -> mad_release:release(Params).
  23. sh(Params) -> mad_repl:sh(Params).
  24. up(Params) -> mad_deps:up(Params).
  25. profile() -> application:get_env(mad,profile,mad).
  26. unknown([]) -> skip;
  27. unknown(Other) -> info("Unknown: ~p~n",[Other]), help().
  28. errors(false) -> [];
  29. errors(true) -> {error,unknown};
  30. errors({ok,L}) -> info("OK: ~tp~n",[L]), [];
  31. errors({error,L}) -> info("ERR: ~tp~n",[L]), {error,L};
  32. errors(X) -> info("ERR: ~tp~n",[X]), {error,X}.
  33. return(true) -> 1;
  34. return(false) -> 0;
  35. return(X) -> X.
  36. info(Format) -> io:format(lists:concat([Format,"\r"])).
  37. info(Format,Args) -> io:format(lists:concat([Format,"\r"]),Args).
  38. help(Reason,D) -> help(io_lib:format("~s ~p", [Reason, D])).
  39. help(Msg) -> help().
  40. help() -> info("MAD Container Tool version ~s~n",[?VERSION]),
  41. info("BNF: ~n"),
  42. info(" invoke = mad params~n"),
  43. info(" params = [] | run params ~n"),
  44. info(" run = command [ options ]~n"),
  45. info(" command = app | deps | clean | compile | up~n"),
  46. info(" | release [ beam | ling | script | runc | depot ]~n"),
  47. info(" | deploy | start | stop | attach | sh ~n"),
  48. return(false).