# Elixir Deploy Manager

A set of Mix tasks to deploy your Elixir Application

## Usage

You can deploy your Elixir Application with the `deploy` task:

mix deploy

This task deploys the complete release for you. It will upload your project with `rsync`, download Elixir and NodeJS dependencies, compile Elixir & JavaScript source files, then build a release with `exrm`.

For your convenience, there're also some more tasks you can work with:

1. `mix deploy.setup`, setup a deployment environment for the current mix application.
2. `mix deploy.service`, run `exrm` application script on remote (eg: `mix deploy.service start`).
3. `mix deploy.mix`, run a Mix task on remote (eg: `mix deploy.mix ecto.migrate`).
4. `mix deploy.clean`, Ccean the deployment environment for the current mix application.

## Installation

Like `exrm`, this project's goal is to make deployments with Elixir projects a breeze. It is composed of a mix task, and build your Elixir project with `exrm`, then deploy it to your server. All you have to do to get started is the following:

**Add `dex` to your list of dependencies in `mix.exs`:**

def application do
  [applications: [:dex]]

def deps do
  [{:dex, "~> x.x.x"}]

There are a number of options you can tweak to customize the way `dex` is used. All of the options described below should be put into your config.exs file, or prod.secret.exs if you don't want it upload to your scm.

config :dex, DeployManager,
  server: "",
  username: "your_username",
  deploy_to: "/var/www/your_app",
  link_files: ["config/prod.secret.exs", ".env"]