\section{Commands}

Synrc mad has a simple interface as follows:

\vspace{1\baselineskip}
\begin{lstlisting}
  MAD Container Tool version b547fa

      invoke = mad params
      params = [] | command [ options  ] params
     command = app     | deps  | clean | compile | up
             | release [ beam  | ling  | script  | runc ]
             | deploy  | start | stop  | attach  | sh
\end{lstlisting}
\vspace{1\baselineskip}

It seems to us more natural, you can specify random
commands set with different specifiers (options).

\subsection{deps}

In rebar-like managers we are selecting deps from rebar.config:
\vspace{1\baselineskip}
\begin{lstlisting}
  {sub_dirs,["apps"]}.
  {deps_dir,"deps"}.
  {deps, [active,{nitro,"2.9"},{n2o,"2.9"}]}.
\end{lstlisting}
\vspace{1\baselineskip}


\subsection{compile, com}
Performs compilation of all known compilations backends in complilation profile of mad:
\vspace{1\baselineskip}
\begin{lstlisting}
    app — app.src erlang templating
    dtl — DTL compiler
    erl — BEAM compiler
    c/c++ — for gcc cland and other native compilation
    script — .script file used in projects like gproc
    yrl/xrl — DSL language parser compilers
    upl — UPL compiler
\end{lstlisting}
\vspace{1\baselineskip}

\subsection{release, rel}
Taking all dependecies and resolve boot sequence according to dependecy order.
Storing this value in .applist. If release type is not defined ({\bf beam} in following example),
then {\bf script} release will be taken as a default.
\vspace{1\baselineskip}
\begin{lstlisting}
    $ mad release beam sample
    Ordered: [kernel,stdlib,fs,ranch,crypto,compiler,syntax_tools,
              gproc,cowlib,cowboy,n2o,sample,active,erlydtl,jsone,
              mad,nitro,sh]
    *WARNING* : Missing application sasl. Can not upgrade with this release
    sample.boot: ok
    OK:  "sample"

    $ mad rel mad
    Ordered: [kernel,stdlib,inets,sh,mad]
    OK:  "mad"
\end{lstlisting}
\vspace{1\baselineskip}

MAD supports several releasing backends:

\vspace{1\baselineskip}
\begin{lstlisting}
    script — script bundles, like mad itself
    beam — ERTS releases with systools
    ling — LING portable unikernels
    runc — Docker-compatible containers
    depot — releases from binary repositories
\end{lstlisting}
\vspace{1\baselineskip}

\subsection{sh}

Start REPL shell session.
