Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -22,4 +22,4 @@ phoenix-*.ez

.DS_Store

/priv/templates/phx.gen.live/core_components.ex
/priv/templates/phx.gen.live/core_components.ex.eex
16 changes: 8 additions & 8 deletions installer/lib/phx_new/ecto.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,15 @@ defmodule Phx.New.Ecto do
@pre "phx_umbrella/apps/app_name"

template(:new, [
{:config, :project, "#{@pre}/config/config.exs": "config/config.exs"},
{:config, :project, "#{@pre}/config/config.exs.eex": "config/config.exs"},
{:eex, :app,
"#{@pre}/lib/app_name/application.ex": "lib/:app/application.ex",
"#{@pre}/lib/app_name.ex": "lib/:app.ex",
"#{@pre}/test/test_helper.exs": "test/test_helper.exs",
"#{@pre}/README.md": "README.md",
"#{@pre}/mix.exs": "mix.exs",
"#{@pre}/gitignore": ".gitignore",
"#{@pre}/formatter.exs": ".formatter.exs"}
"#{@pre}/lib/app_name/application.ex.eex": "lib/:app/application.ex",
"#{@pre}/lib/app_name.ex.eex": "lib/:app.ex",
"#{@pre}/test/test_helper.exs.eex": "test/test_helper.exs",
"#{@pre}/README.md.eex": "README.md",
"#{@pre}/mix.exs.eex": "mix.exs",
"#{@pre}/gitignore.eex": ".gitignore",
"#{@pre}/formatter.exs.eex": ".formatter.exs"}
])

def prepare_project(%Project{} = project) do
Expand Down
2 changes: 1 addition & 1 deletion installer/lib/phx_new/generator.ex
Original file line number Diff line number Diff line change
Expand Up @@ -221,7 +221,7 @@ defmodule Phx.New.Generator do
path = Project.join_path(project, :project, "config/config.exs")

extra =
Phx.New.Umbrella.render(:new, "phx_umbrella/config/extra_config.exs", project.binding)
Phx.New.Umbrella.render(:new, "phx_umbrella/config/extra_config.exs.eex", project.binding)

File.write(path, [File.read!(path), extra])
end
Expand Down
2 changes: 1 addition & 1 deletion installer/lib/phx_new/mailer.ex
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ defmodule Phx.New.Mailer do
alias Phx.New.{Project}

template(:new, [
{:eex, :app, "phx_mailer/lib/app_name/mailer.ex": "lib/:app/mailer.ex"}
{:eex, :app, "phx_mailer/lib/app_name/mailer.ex.eex": "lib/:app/mailer.ex"}
])

def prepare_project(%Project{} = project) do
Expand Down
88 changes: 44 additions & 44 deletions installer/lib/phx_new/single.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,26 +5,26 @@ defmodule Phx.New.Single do

template(:new, [
{:config, :project,
"phx_single/config/config.exs": "config/config.exs",
"phx_single/config/dev.exs": "config/dev.exs",
"phx_single/config/prod.exs": "config/prod.exs",
"phx_single/config/runtime.exs": "config/runtime.exs",
"phx_single/config/test.exs": "config/test.exs"},
"phx_single/config/config.exs.eex": "config/config.exs",
"phx_single/config/dev.exs.eex": "config/dev.exs",
"phx_single/config/prod.exs.eex": "config/prod.exs",
"phx_single/config/runtime.exs.eex": "config/runtime.exs",
"phx_single/config/test.exs.eex": "config/test.exs"},
{:eex, :web,
"phx_single/lib/app_name/application.ex": "lib/:app/application.ex",
"phx_single/lib/app_name.ex": "lib/:app.ex",
"phx_web/controllers/error_json.ex": "lib/:lib_web_name/controllers/error_json.ex",
"phx_web/endpoint.ex": "lib/:lib_web_name/endpoint.ex",
"phx_web/router.ex": "lib/:lib_web_name/router.ex",
"phx_web/telemetry.ex": "lib/:lib_web_name/telemetry.ex",
"phx_single/lib/app_name_web.ex": "lib/:lib_web_name.ex",
"phx_single/mix.exs": "mix.exs",
"phx_single/README.md": "README.md",
"phx_single/formatter.exs": ".formatter.exs",
"phx_single/gitignore": ".gitignore",
"phx_test/support/conn_case.ex": "test/support/conn_case.ex",
"phx_single/test/test_helper.exs": "test/test_helper.exs",
"phx_test/controllers/error_json_test.exs":
"phx_single/lib/app_name/application.ex.eex": "lib/:app/application.ex",
"phx_single/lib/app_name.ex.eex": "lib/:app.ex",
"phx_web/controllers/error_json.ex.eex": "lib/:lib_web_name/controllers/error_json.ex",
"phx_web/endpoint.ex.eex": "lib/:lib_web_name/endpoint.ex",
"phx_web/router.ex.eex": "lib/:lib_web_name/router.ex",
"phx_web/telemetry.ex.eex": "lib/:lib_web_name/telemetry.ex",
"phx_single/lib/app_name_web.ex.eex": "lib/:lib_web_name.ex",
"phx_single/mix.exs.eex": "mix.exs",
"phx_single/README.md.eex": "README.md",
"phx_single/formatter.exs.eex": ".formatter.exs",
"phx_single/gitignore.eex": ".gitignore",
"phx_test/support/conn_case.ex.eex": "test/support/conn_case.ex",
"phx_single/test/test_helper.exs.eex": "test/test_helper.exs",
"phx_test/controllers/error_json_test.exs.eex":
"test/:lib_web_name/controllers/error_json_test.exs"},
{:keep, :web,
"phx_web/controllers": "lib/:lib_web_name/controllers",
Expand All @@ -33,51 +33,51 @@ defmodule Phx.New.Single do

template(:gettext, [
{:eex, :web,
"phx_gettext/gettext.ex": "lib/:lib_web_name/gettext.ex",
"phx_gettext/en/LC_MESSAGES/errors.po": "priv/gettext/en/LC_MESSAGES/errors.po",
"phx_gettext/errors.pot": "priv/gettext/errors.pot"}
"phx_gettext/gettext.ex.eex": "lib/:lib_web_name/gettext.ex",
"phx_gettext/en/LC_MESSAGES/errors.po.eex": "priv/gettext/en/LC_MESSAGES/errors.po",
"phx_gettext/errors.pot.eex": "priv/gettext/errors.pot"}
])

template(:html, [
{:eex, :web,
"phx_web/controllers/error_html.ex": "lib/:lib_web_name/controllers/error_html.ex",
"phx_test/controllers/error_html_test.exs":
"phx_web/controllers/error_html.ex.eex": "lib/:lib_web_name/controllers/error_html.ex",
"phx_test/controllers/error_html_test.exs.eex":
"test/:lib_web_name/controllers/error_html_test.exs",
"phx_web/components/core_components.ex": "lib/:lib_web_name/components/core_components.ex",
"phx_web/controllers/page_controller.ex": "lib/:lib_web_name/controllers/page_controller.ex",
"phx_web/controllers/page_html.ex": "lib/:lib_web_name/controllers/page_html.ex",
"phx_web/controllers/page_html/home.html.heex":
"phx_web/components/core_components.ex.eex": "lib/:lib_web_name/components/core_components.ex",
"phx_web/controllers/page_controller.ex.eex": "lib/:lib_web_name/controllers/page_controller.ex",
"phx_web/controllers/page_html.ex.eex": "lib/:lib_web_name/controllers/page_html.ex",
"phx_web/controllers/page_html/home.html.heex.eex":
"lib/:lib_web_name/controllers/page_html/home.html.heex",
"phx_test/controllers/page_controller_test.exs":
"phx_test/controllers/page_controller_test.exs.eex":
"test/:lib_web_name/controllers/page_controller_test.exs",
"phx_web/components/layouts/root.html.heex":
"phx_web/components/layouts/root.html.heex.eex":
"lib/:lib_web_name/components/layouts/root.html.heex",
"phx_web/components/layouts.ex": "lib/:lib_web_name/components/layouts.ex"},
{:eex, :web, "phx_assets/logo.svg": "priv/static/images/logo.svg"}
"phx_web/components/layouts.ex.eex": "lib/:lib_web_name/components/layouts.ex"},
{:eex, :web, "phx_assets/logo.svg.eex": "priv/static/images/logo.svg"}
])

template(:ecto, [
{:eex, :app,
"phx_ecto/repo.ex": "lib/:app/repo.ex",
"phx_ecto/formatter.exs": "priv/repo/migrations/.formatter.exs",
"phx_ecto/seeds.exs": "priv/repo/seeds.exs",
"phx_ecto/data_case.ex": "test/support/data_case.ex"},
"phx_ecto/repo.ex.eex": "lib/:app/repo.ex",
"phx_ecto/formatter.exs.eex": "priv/repo/migrations/.formatter.exs",
"phx_ecto/seeds.exs.eex": "priv/repo/seeds.exs",
"phx_ecto/data_case.ex.eex": "test/support/data_case.ex"},
{:keep, :app, "phx_ecto/priv/repo/migrations": "priv/repo/migrations"}
])

template(:css, [
{:eex, :web,
"phx_assets/app.css": "assets/css/app.css",
"phx_assets/heroicons.js": "assets/vendor/heroicons.js",
"phx_assets/daisyui.js": "assets/vendor/daisyui.js",
"phx_assets/daisyui-theme.js": "assets/vendor/daisyui-theme.js"}
"phx_assets/app.css.eex": "assets/css/app.css",
"phx_assets/heroicons.js.eex": "assets/vendor/heroicons.js",
"phx_assets/daisyui.js.eex": "assets/vendor/daisyui.js",
"phx_assets/daisyui-theme.js.eex": "assets/vendor/daisyui-theme.js"}
])

template(:js, [
{:eex, :web,
"phx_assets/app.js": "assets/js/app.js",
"phx_assets/topbar.js": "assets/vendor/topbar.js",
"phx_assets/tsconfig.json": "assets/tsconfig.json"}
"phx_assets/app.js.eex": "assets/js/app.js",
"phx_assets/topbar.js.eex": "assets/vendor/topbar.js",
"phx_assets/tsconfig.json.eex": "assets/tsconfig.json"}
])

template(:no_js, [
Expand All @@ -102,7 +102,7 @@ defmodule Phx.New.Single do
])

template(:mailer, [
{:eex, :app, "phx_mailer/lib/app_name/mailer.ex": "lib/:app/mailer.ex"}
{:eex, :app, "phx_mailer/lib/app_name/mailer.ex.eex": "lib/:app/mailer.ex"}
])

def prepare_project(%Project{app: app, base_path: base_path} = project) when not is_nil(app) do
Expand Down
20 changes: 10 additions & 10 deletions installer/lib/phx_new/umbrella.ex
Original file line number Diff line number Diff line change
Expand Up @@ -5,16 +5,16 @@ defmodule Phx.New.Umbrella do

template(:new, [
{:eex, :project,
"phx_umbrella/gitignore": ".gitignore",
"phx_umbrella/config/config.exs": "config/config.exs",
"phx_umbrella/config/dev.exs": "config/dev.exs",
"phx_umbrella/config/test.exs": "config/test.exs",
"phx_umbrella/config/prod.exs": "config/prod.exs",
"phx_umbrella/config/runtime.exs": "config/runtime.exs",
"phx_umbrella/mix.exs": "mix.exs",
"phx_umbrella/README.md": "README.md",
"phx_umbrella/formatter.exs": ".formatter.exs"},
{:config, :project, "phx_umbrella/config/extra_config.exs": "config/config.exs"}
"phx_umbrella/gitignore.eex": ".gitignore",
"phx_umbrella/config/config.exs.eex": "config/config.exs",
"phx_umbrella/config/dev.exs.eex": "config/dev.exs",
"phx_umbrella/config/test.exs.eex": "config/test.exs",
"phx_umbrella/config/prod.exs.eex": "config/prod.exs",
"phx_umbrella/config/runtime.exs.eex": "config/runtime.exs",
"phx_umbrella/mix.exs.eex": "mix.exs",
"phx_umbrella/README.md.eex": "README.md",
"phx_umbrella/formatter.exs.eex": ".formatter.exs"},
{:config, :project, "phx_umbrella/config/extra_config.exs.eex": "config/config.exs"}
])

def prepare_project(%Project{app: app} = project) when not is_nil(app) do
Expand Down
64 changes: 32 additions & 32 deletions installer/lib/phx_new/web.ex
Original file line number Diff line number Diff line change
Expand Up @@ -6,54 +6,54 @@ defmodule Phx.New.Web do
@pre "phx_umbrella/apps/app_name_web"

template(:new, [
{:prod_config, :project, "#{@pre}/config/runtime.exs": "config/runtime.exs"},
{:prod_config, :project, "#{@pre}/config/runtime.exs.eex": "config/runtime.exs"},
{:config, :project,
"#{@pre}/config/config.exs": "config/config.exs",
"#{@pre}/config/dev.exs": "config/dev.exs",
"#{@pre}/config/prod.exs": "config/prod.exs",
"#{@pre}/config/test.exs": "config/test.exs"},
"#{@pre}/config/config.exs.eex": "config/config.exs",
"#{@pre}/config/dev.exs.eex": "config/dev.exs",
"#{@pre}/config/prod.exs.eex": "config/prod.exs",
"#{@pre}/config/test.exs.eex": "config/test.exs"},
{:keep, :web,
"phx_web/controllers": "lib/:web_app/controllers",
"phx_test/channels": "test/:web_app/channels",
"phx_test/controllers": "test/:web_app/controllers"},
{:eex, :web,
"#{@pre}/lib/app_name.ex": "lib/:web_app.ex",
"#{@pre}/lib/app_name/application.ex": "lib/:web_app/application.ex",
"phx_web/endpoint.ex": "lib/:web_app/endpoint.ex",
"phx_web/router.ex": "lib/:web_app/router.ex",
"phx_web/telemetry.ex": "lib/:web_app/telemetry.ex",
"phx_web/controllers/error_json.ex": "lib/:web_app/controllers/error_json.ex",
"#{@pre}/mix.exs": "mix.exs",
"#{@pre}/README.md": "README.md",
"#{@pre}/gitignore": ".gitignore",
"#{@pre}/test/test_helper.exs": "test/test_helper.exs",
"phx_test/support/conn_case.ex": "test/support/conn_case.ex",
"phx_test/controllers/error_json_test.exs": "test/:web_app/controllers/error_json_test.exs",
"#{@pre}/formatter.exs": ".formatter.exs"}
"#{@pre}/lib/app_name.ex.eex": "lib/:web_app.ex",
"#{@pre}/lib/app_name/application.ex.eex": "lib/:web_app/application.ex",
"phx_web/endpoint.ex.eex": "lib/:web_app/endpoint.ex",
"phx_web/router.ex.eex": "lib/:web_app/router.ex",
"phx_web/telemetry.ex.eex": "lib/:web_app/telemetry.ex",
"phx_web/controllers/error_json.ex.eex": "lib/:web_app/controllers/error_json.ex",
"#{@pre}/mix.exs.eex": "mix.exs",
"#{@pre}/README.md.eex": "README.md",
"#{@pre}/gitignore.eex": ".gitignore",
"#{@pre}/test/test_helper.exs.eex": "test/test_helper.exs",
"phx_test/support/conn_case.ex.eex": "test/support/conn_case.ex",
"phx_test/controllers/error_json_test.exs.eex": "test/:web_app/controllers/error_json_test.exs",
"#{@pre}/formatter.exs.eex": ".formatter.exs"}
])

template(:gettext, [
{:eex, :web,
"phx_gettext/gettext.ex": "lib/:web_app/gettext.ex",
"phx_gettext/en/LC_MESSAGES/errors.po": "priv/gettext/en/LC_MESSAGES/errors.po",
"phx_gettext/errors.pot": "priv/gettext/errors.pot"}
"phx_gettext/gettext.ex.eex": "lib/:web_app/gettext.ex",
"phx_gettext/en/LC_MESSAGES/errors.po.eex": "priv/gettext/en/LC_MESSAGES/errors.po",
"phx_gettext/errors.pot.eex": "priv/gettext/errors.pot"}
])

template(:html, [
{:eex, :web,
"phx_web/components/core_components.ex": "lib/:web_app/components/core_components.ex",
"phx_web/components/layouts.ex": "lib/:web_app/components/layouts.ex",
"phx_web/controllers/page_controller.ex": "lib/:web_app/controllers/page_controller.ex",
"phx_web/controllers/error_html.ex": "lib/:web_app/controllers/error_html.ex",
"phx_web/controllers/page_html.ex": "lib/:web_app/controllers/page_html.ex",
"phx_web/controllers/page_html/home.html.heex":
"phx_web/components/core_components.ex.eex": "lib/:web_app/components/core_components.ex",
"phx_web/components/layouts.ex.eex": "lib/:web_app/components/layouts.ex",
"phx_web/controllers/page_controller.ex.eex": "lib/:web_app/controllers/page_controller.ex",
"phx_web/controllers/error_html.ex.eex": "lib/:web_app/controllers/error_html.ex",
"phx_web/controllers/page_html.ex.eex": "lib/:web_app/controllers/page_html.ex",
"phx_web/controllers/page_html/home.html.heex.eex":
"lib/:web_app/controllers/page_html/home.html.heex",
"phx_test/controllers/page_controller_test.exs":
"phx_test/controllers/page_controller_test.exs.eex":
"test/:web_app/controllers/page_controller_test.exs",
"phx_test/controllers/error_html_test.exs": "test/:web_app/controllers/error_html_test.exs",
"phx_assets/topbar.js": "assets/vendor/topbar.js",
"phx_web/components/layouts/root.html.heex": "lib/:web_app/components/layouts/root.html.heex"},
{:eex, :web, "phx_assets/logo.svg": "priv/static/images/logo.svg"}
"phx_test/controllers/error_html_test.exs.eex": "test/:web_app/controllers/error_html_test.exs",
"phx_assets/topbar.js.eex": "assets/vendor/topbar.js",
"phx_web/components/layouts/root.html.heex.eex": "lib/:web_app/components/layouts/root.html.heex"},
{:eex, :web, "phx_assets/logo.svg.eex": "priv/static/images/logo.svg"}
])

def prepare_project(%Project{app: app} = project) when not is_nil(app) do
Expand Down
9 changes: 8 additions & 1 deletion lib/mix/phoenix.ex
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,14 @@ defmodule Mix.Phoenix do
source =
Enum.find_value(roots, fn root ->
source = Path.join(root, source_file_path)
if File.exists?(source), do: source
# for backwards compatibility, we also check for files with missing .eex extension
source_with_stripped_eex = String.replace_suffix(source, ".eex", "")

cond do
File.exists?(source) -> source
File.exists?(source_with_stripped_eex) -> source_with_stripped_eex
true -> nil
end
end) || raise "could not find #{source_file_path} in any of the sources"

case format do
Expand Down
Loading