Current section

Files

Jump to
mandrag lib mandrag.ex
Raw

lib/mandrag.ex

defmodule Mandrag do
@moduledoc """
Documentation for Mandrag.
"""
# Config
def app, do: Application.get_env(:mandrag, :app, Mix.Project.config()[:app])
def docker_repo, do: Application.get_env(:mandrag, :image, "docker/#{name()}")
def docker_build_args do
Map.merge(Application.get_env(:mandrag, :docker_build_args, %{}), %{name: app()})
end
def dockerfile_path do
Application.get_env(
:mandrag,
:dockerfile_path,
Path.join(:code.priv_dir(:mandrag), "Dockerfile")
)
end
def tag, do: Mix.Project.config()[:version]
def ecto_repo, do: Application.get_env(:mandrag, :repo)
# Helpers
def current, do: "#{docker_repo()}:#{tag()}"
def docker(args), do: Mix.Shell.IO.cmd("docker " <> args)
def latest, do: "#{docker_repo()}:latest"
def migrate do
if function_exported?(Ecto.Migrator, :run, 4) do
{:ok, _} = Application.ensure_all_started(app())
path = Application.app_dir(app(), "priv/repo/migrations")
Ecto.Migrator.run(ecto_repo(), path, :up, all: true)
end
end
def name, do: app() |> Atom.to_string()
end