Packages
surface
0.11.3
0.12.3
0.12.2
0.12.1
0.12.0
0.11.5
0.11.4
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.5
0.9.4
0.9.3
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.6
0.7.5
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.1
0.4.0
0.3.2
0.3.1
0.3.0
0.2.1
0.2.0
0.1.1
0.1.0
0.1.0-alpha.2
0.1.0-alpha.1
0.1.0-alpha.0
A component based library for Phoenix LiveView
Current section
Files
Jump to
Current section
Files
lib/mix/tasks/surface/surface.init/project_patchers/demo.ex
defmodule Mix.Tasks.Surface.Init.ProjectPatchers.Demo do
@moduledoc false
alias Mix.Tasks.Surface.Init.FilePatchers
@behaviour Mix.Tasks.Surface.Init.ProjectPatcher
@impl true
def specs(%{demo: true} = assigns) do
%{web_module: web_module, web_path: web_path, web_test_path: web_test_path} = assigns
[
{:patch, "#{web_path}/router.ex", [configure_demo_route(web_module)]},
{:create, "demo/card.ex", Path.join([web_path, "components"])},
{:create, "demo/card_test.exs", Path.join([web_test_path, "components"])},
{:create, "demo/demo.ex", Path.join([web_path, "live"])}
]
end
def specs(_assigns), do: []
def configure_demo_route(web_module) do
%{
name: "Configure demo route",
patch:
&FilePatchers.Phoenix.append_route_to_main_scope(
&1,
~S("/demo"),
web_module,
~S(live "/demo", Demo)
),
instructions: """
Update your `router.ex` configuration so the demo can be available at `/demo`.
# Example
```
scope "/", MyAppWeb do
pipe_through :browser
live "/demo", Demo
end
```
"""
}
end
end