123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- -module(mad).
- -copyright('Maxim Sokhatsky').
- -compile(export_all).
- -export([main/1]).
- main([]) -> help();
- main(Params) ->
- {Other,FP} = mad_utils:fold_params(Params),
- io:format("Params: ~p~n\r",[FP]),
- case Other == [] of
- true -> skip;
- false -> io:format("Unknown Command or Parameter ~p~n\r",[Other]), help() end,
- Cwd = mad_utils:cwd(),
- ConfigFile = "rebar.config",
- ConfigFileAbs = filename:join(Cwd, ConfigFile),
- Conf = mad_utils:consult(ConfigFileAbs),
- Conf1 = mad_script:script(ConfigFileAbs, Conf, ""),
- return(bool(lists:foldl(fun (_,true) -> true;
- ({Name,Par},false) -> ?MODULE:Name(Cwd, ConfigFile, Conf1, Par) end, false, FP))).
- bool(false) -> 0;
- bool(_) -> 1.
- %% fetch dependencies
- deps(Cwd, ConfigFile, Conf, Params) ->
- io:format("Deps Params: ~p~n",[Params]),
- case mad_utils:get_value(deps, Conf, []) of
- [] -> ok;
- Deps ->
- Cache = mad_utils:get_value(deps_dir, Conf, deps_fetch),
- case Cache of
- deps_fetch -> skip;
- Dir -> file:make_dir(Dir) end,
- FetchDir = mad_utils:get_value(deps_dir, Conf, ["deps"]),
- file:make_dir(FetchDir),
- mad_deps:fetch(Cwd, Conf, ConfigFile, Deps)
- end, false.
- %% compile dependencies and the app
- compile(Cwd, ConfigFile, Conf, Params) ->
- io:format("Compile Params: ~p~n\r",[Params]),
- case Params of
- [] -> mad_compile:'compile-deps'(Cwd, ConfigFile, Conf);
- __ -> [ mad_compile:dep(Cwd, Conf, ConfigFile, Name) || Name <- Params ]
- end,
- mad_compile:'compile-apps'(Cwd, ConfigFile, Conf), false.
- %% reltool apps resolving
- plan(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Plan Params: ~p~n",[Params]),
- mad_plan:main([]).
- repl(_Cwd,_ConfigFileName,_Config,Params) ->
- % io:format("Repl Params: ~p~n",[Params]),
- mad_repl:main(Params,_Config).
- bundle(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Tool Params: ~p~n",[Params]),
- Name = case Params of [] -> mad_utils:cwd(); E -> E end,
- mad_bundle:main(filename:basename(Name)), false.
- up(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Up Params: ~p~n",[Params]),
- mad_deps:up(Params).
- app(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Create App Params: ~p~n",[Params]),
- mad_create:app(Params), false.
- lib(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Create Lib Params: ~p~n",[Params]),
- mad_create:lib(Params), false.
- start(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Start Params: ~p~n",[Params]),
- mad_run:start(Params), false.
- attach(_Cwd,_ConfigFileName,_Config,Params) ->
- % io:format("Attach Params: ~p~n",[Params]),
- mad_run:attach(Params), false.
- clean(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Clean Params: ~p~n",[Params]),
- mad_run:clean(Params), false.
- stop(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Stop Params: ~p~n",[Params]),
- mad_run:stop(Params), false.
- release(_Cwd,_ConfigFileName,_Config,Params) ->
- io:format("Release Params: ~p~n",[Params]),
- mad_release:main(Params), false.
- static(_Cwd,_ConfigFileName,Config,Params) ->
- io:format("Compile Static Params: ~p~n",[Params]),
- mad_static:main(Config, Params), false.
- version() -> "2.2".
- help(Reason, Data) -> help(io_lib:format("~s ~p", [Reason, Data])).
- help(Msg) -> io:format("Error: ~s~n~n", [Msg]), help().
- help() ->
- io:format("MAD Build Tool version ~s~n",[version()]),
- io:format("BNF: ~n"),
- io:format(" invoke := mad params~n"),
- io:format(" params := [] | run params ~n"),
- io:format(" run := command [ options ]~n"),
- io:format(" commad := app | lib | deps | up | compile | release | bundle~n"),
- io:format(" clean | start | stop | attach | repl ~n"),
- return(0).
- return(X) -> X.
|