![](https://github.com/erlware/relx/workflows/Common%20Test/badge.svg)
![Cirrus CI - Task and Script Build Status](https://img.shields.io/cirrus/github/erlware/relx?label=OSX%20Tests)

Relx
=======

Relx is a library that assembles Erlang/OTP releases. Given a release
specification and a list of directories in which to search for OTP
applications it will generate a release output.

It is generally used through the Erlang/OTP build tool
[rebar3](https://www.rebar3.org/) which provides a cli interface.

Documentation
-----------

`relx` is a library used by [rebar3](https://www.rebar3.org/). Documentation on
using `rebar3` for building releases with `relx` can be found on
[rebar3.org](https://rebar3.org/docs/deployment/releases/).

Also see [Adopting Erlang's Releases
chapter](https://adoptingerlang.org/docs/production/releases/). 


Building and Testing
--------

Common Test suites can be run with `rebar3`:

``` shell
$ rebar3 compile
$ rebar3 ct
```

Tests for the start scripts that are generated by `relx` are tested with
[shelltestrunner](https://github.com/simonmichael/shelltestrunner/).

The script `shelltests/run_tests.sh` will clone `rebar3` main and build it
with the current `relx` as a checkout dependency and then run the tests using
that `rebar3` escript:

``` shell
$ shelltests/run_tests.sh
```
