Skip to content

Commit ef0c4b2

Browse files
committed
application and router
1 parent 2959a44 commit ef0c4b2

File tree

2 files changed

+38
-10
lines changed

2 files changed

+38
-10
lines changed

lib/mix/tasks/beacon.gen.site.ex

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,13 @@ defmodule Mix.Tasks.Beacon.Gen.Site do
5555
|> create_migration(repo)
5656
|> add_use_beacon_in_router(router)
5757
|> add_beacon_pipeline_in_router(router)
58-
|> mount_site_in_router(router, site, path, web_module)
58+
|> mount_site_in_router(router, site, path, host)
5959
|> add_site_config_in_config_runtime(site, repo, router, host)
6060
|> add_beacon_config_in_app_supervisor(site, repo, router)
6161
|> maybe_create_proxy_endpoint(host)
6262
|> maybe_create_new_endpoint(host, otp_app, web_module)
6363
|> maybe_configure_new_endpoint(host, otp_app)
64+
|> maybe_add_new_endpoint_to_application(host, repo)
6465
|> Igniter.add_notice("""
6566
Site #{inspect(site)} generated successfully.
6667
@@ -141,7 +142,7 @@ defmodule Mix.Tasks.Beacon.Gen.Site do
141142
)
142143
end
143144

144-
defp mount_site_in_router(igniter, router, site, path, web_module) do
145+
defp mount_site_in_router(igniter, router, site, path, host) do
145146
case Igniter.Project.Module.find_module(igniter, router) do
146147
{:ok, {_igniter, _source, zipper}} ->
147148
exists? =
@@ -156,16 +157,17 @@ defmodule Mix.Tasks.Beacon.Gen.Site do
156157
"Site already exists: #{site}, skipping creation."
157158
)
158159
else
159-
Igniter.Libs.Phoenix.append_to_scope(
160-
igniter,
161-
"/",
160+
content =
162161
"""
163162
beacon_site #{inspect(path)}, site: #{inspect(site)}
164-
""",
165-
with_pipelines: [:browser, :beacon],
166-
router: router,
167-
arg2: web_module
168-
)
163+
"""
164+
165+
opts =
166+
if host,
167+
do: [with_pipelines: [:browser, :beacon], router: router, arg2: [host: host]],
168+
else: [with_pipelines: [:browser, :beacon], router: router]
169+
170+
Igniter.Libs.Phoenix.append_to_scope(igniter, "/", content, opts)
169171
end
170172

171173
_ ->
@@ -364,6 +366,12 @@ defmodule Mix.Tasks.Beacon.Gen.Site do
364366
)
365367
end
366368

369+
defp maybe_add_new_endpoint_to_application(igniter, nil, _), do: igniter
370+
371+
defp maybe_add_new_endpoint_to_application(igniter, host, repo) do
372+
Igniter.Project.Application.add_new_child(igniter, new_endpoint_module(igniter, host), after: repo)
373+
end
374+
367375
defp new_endpoint_module(igniter, host) do
368376
[implicit_prefix | _] = String.split(host, ".")
369377
Igniter.Libs.Phoenix.web_module_name(igniter, "#{String.capitalize(implicit_prefix)}Endpoint")

test/mix/tasks/gen_site_test.exs

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,5 +256,25 @@ defmodule Mix.Tasks.Beacon.GenSiteTest do
256256
9 + |config :beacon, my_site: [site: :my_site, repo: Test.Repo, endpoint: TestWeb.ExampleEndpoint, router: TestWeb.Router]
257257
""")
258258
end
259+
260+
test "updates application.ex", %{project: project} do
261+
project
262+
|> Igniter.compose_task("beacon.gen.site", @opts_my_site ++ ~w(--host example.com))
263+
|> assert_has_patch("lib/test/application.ex", """
264+
14 + | TestWeb.ExampleEndpoint,
265+
""")
266+
end
267+
268+
test "updates router", %{project: project} do
269+
project
270+
|> Igniter.compose_task("beacon.gen.site", @opts_my_site ++ ~w(--host example.com))
271+
|> assert_has_patch("lib/test_web/router.ex", """
272+
23 + | scope "/", host: "example.com" do
273+
24 + | pipe_through [:browser, :beacon]
274+
25 + | beacon_site "/", site: :my_site
275+
26 + | end
276+
27 + |
277+
""")
278+
end
259279
end
260280
end

0 commit comments

Comments
 (0)