Current section

Files

Jump to
igniter lib igniter phoenix single.ex
Raw

lib/igniter/phoenix/single.ex

defmodule Igniter.Phoenix.Single do
@moduledoc false
# Wrap Phx.New.Single
# https://github.com/phoenixframework/phoenix/blob/7586cbee9e37afbe0b3cdbd560b9e6aa60d32bf6/installer/lib/phx_new/single.ex
alias Igniter.Phoenix.Generator
alias Phx.New.Project
@mod Phx.New.Single
def generate(igniter, project) do
generators = [
{true, &gen_new/2},
{Project.ecto?(project), &gen_ecto/2},
{Project.html?(project), &gen_html/2},
{Project.mailer?(project), &gen_mailer/2},
{Project.gettext?(project), &gen_gettext/2},
{true, &gen_assets/2}
]
Enum.reduce(generators, igniter, fn
{true, gen_fun}, acc -> gen_fun.(acc, project)
_, acc -> acc
end)
end
def gen_new(igniter, project) do
Generator.copy_from(igniter, project, @mod, :new)
end
def gen_ecto(igniter, project) do
igniter
|> Generator.copy_from(project, @mod, :ecto)
|> Generator.gen_ecto_config(project)
end
def gen_html(igniter, project) do
Generator.copy_from(igniter, project, @mod, :html)
end
def gen_mailer(igniter, project) do
Generator.copy_from(igniter, project, @mod, :mailer)
end
def gen_gettext(igniter, project) do
Generator.copy_from(igniter, project, @mod, :gettext)
end
def gen_assets(igniter, project) do
javascript? = Project.javascript?(project)
css? = Project.css?(project)
html? = Project.html?(project)
igniter = Generator.copy_from(igniter, project, @mod, :static)
igniter =
if html? or javascript? do
command = if javascript?, do: :js, else: :no_js
Generator.copy_from(igniter, project, @mod, command)
else
igniter
end
if html? or css? do
command = if css?, do: :css, else: :no_css
Generator.copy_from(igniter, project, @mod, command)
else
igniter
end
end
end