25
1
mirror of https://github.com/processone/ejabberd.git synced 2024-11-30 16:36:29 +01:00
xmpp.chapril.org-ejabberd/rel/relive.escript
Badlop adbccbe852 New "make relive" similar to "ejabberdctl live" without installing
Prepare with:
  ./autogen.sh && ./configure --with-rebar=./rebar3 && make
Or use this if you installed Elixir:
  ./autogen.sh && ./configure --with-rebar=mix && make
Start without installing (it recompiles when necessary):
  make relive
It stores config, database and logs in _build/relive/
There's available the well-known script:
  _build/relive/ejabberdctl

Please note this fails immediately:
  r3:do(compile).
This crashes a few seconds later:
  rebar3:run(["compile"]).
Workaround that works correctly:
  ejabberd_admin:update().
2022-02-03 18:21:47 +01:00

27 lines
742 B
Erlang

#!/usr/bin/env escript
main(_) ->
Base = "_build/relive",
prepare(Base, "", none),
prepare(Base, "conf", {os, cmd, "rel/setup-relive.sh"}),
prepare(Base, "database", none),
prepare(Base, "logs", none),
c:erlangrc([os:cmd("echo -n $HOME")]),
ok.
prepare(BaseDir, SuffixDir, MFA) ->
Dir = filename:join(BaseDir, SuffixDir),
case file:make_dir(Dir) of
ok ->
io:format("Preparing relive dir ~s...~n", [Dir]),
case MFA of
none -> ok;
{M, F, A} -> M:F(A)
end;
{error, eexist} ->
ok;
{error, LogsError} ->
io:format("Error creating dir ~s: ~p~n", [Dir, LogsError]),
halt(1)
end.