Skip to content

Commit 14d1738

Browse files
authored
Support lliveview 1.0 (#761)
* Support LV 1.0 * Add :ignore_when option to patchers and update phx_new to 1.7.19 * Remove unused code spotted by Elixir 1.18 * Update CI config
1 parent 14d6d6f commit 14d1738

File tree

10 files changed

+68
-37
lines changed

10 files changed

+68
-37
lines changed

.github/workflows/ci.yml

+10-5
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,12 @@ jobs:
1717
matrix:
1818
include:
1919
- elixir: '1.13.4'
20-
otp: '24.0'
20+
otp: '25.0'
2121
blend: phoenix_live_view_0_19
2222
- elixir: '1.13.4'
2323
otp: '25.0'
24-
run_plugin_tests: true
25-
warnings_as_errors: true
26-
- elixir: '1.14.0'
24+
blend: phoenix_live_view_0_20
25+
- elixir: '1.14.1'
2726
otp: '25.0'
2827
run_plugin_tests: true
2928
run_integration_tests: true
@@ -45,7 +44,13 @@ jobs:
4544
run_plugin_tests: true
4645
run_integration_tests: true
4746
warnings_as_errors: true
48-
- elixir: '1.17.0'
47+
- elixir: '1.18.0'
48+
otp: '27.0.1'
49+
check_formatted: true
50+
run_plugin_tests: true
51+
run_integration_tests: true
52+
warnings_as_errors: true
53+
- elixir: '1.18.0'
4954
otp: '27.0.1'
5055
update_deps: true
5156
run_plugin_tests: true

.tool-versions

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
erlang 27.0.1
2-
elixir 1.17.2-otp-27
1+
erlang 27.2.2
2+
elixir 1.18.2-otp-27

blend.exs

+2-1
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
%{
2-
phoenix_live_view_0_19: [{:phoenix_live_view, "~> 0.19.0"}]
2+
phoenix_live_view_0_19: [{:phoenix_live_view, "~> 0.19.0"}],
3+
phoenix_live_view_0_20: [{:phoenix_live_view, "~> 0.20.10"}]
34
}

blend/phoenix_live_view_0_20.mix.lock

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
%{
2+
"blend": {:hex, :blend, "0.3.0", "ba12054cd0d9e4235285e72017f04c3678058c7d293212e699d17f59e52340de", [:mix], [], "hexpm", "0a4b17a1acfe5d6dad7df8173b7ba89c92f3f3e02416dd3321b85262117ebfd8"},
3+
"castore": {:hex, :castore, "1.0.11", "4bbd584741601eb658007339ea730b082cc61f3554cf2e8f39bf693a11b49073", [:mix], [], "hexpm", "e03990b4db988df56262852f20de0f659871c35154691427a5047f4967a16a62"},
4+
"earmark_parser": {:hex, :earmark_parser, "1.4.43", "34b2f401fe473080e39ff2b90feb8ddfeef7639f8ee0bbf71bb41911831d77c5", [:mix], [], "hexpm", "970a3cd19503f5e8e527a190662be2cee5d98eed1ff72ed9b3d1a3d466692de8"},
5+
"ex_doc": {:hex, :ex_doc, "0.37.1", "65ca30d242082b95aa852b3b73c9d9914279fff56db5dc7b3859be5504417980", [:mix], [{:earmark_parser, "~> 1.4.42", [hex: :earmark_parser, repo: "hexpm", optional: false]}, {:makeup_c, ">= 0.1.0", [hex: :makeup_c, repo: "hexpm", optional: true]}, {:makeup_elixir, "~> 0.14 or ~> 1.0", [hex: :makeup_elixir, repo: "hexpm", optional: false]}, {:makeup_erlang, "~> 0.1 or ~> 1.0", [hex: :makeup_erlang, repo: "hexpm", optional: false]}, {:makeup_html, ">= 0.1.0", [hex: :makeup_html, repo: "hexpm", optional: true]}], "hexpm", "6774f75477733ea88ce861476db031f9399c110640752ca2b400dbbb50491224"},
6+
"floki": {:hex, :floki, "0.37.0", "b83e0280bbc6372f2a403b2848013650b16640cd2470aea6701f0632223d719e", [:mix], [], "hexpm", "516a0c15a69f78c47dc8e0b9b3724b29608aa6619379f91b1ffa47109b5d0dd3"},
7+
"jason": {:hex, :jason, "1.4.4", "b9226785a9aa77b6857ca22832cffa5d5011a667207eb2a0ad56adb5db443b8a", [:mix], [{:decimal, "~> 1.0 or ~> 2.0", [hex: :decimal, repo: "hexpm", optional: true]}], "hexpm", "c5eb0cab91f094599f94d55bc63409236a8ec69a21a67814529e8d5f6cc90b3b"},
8+
"makeup": {:hex, :makeup, "1.2.1", "e90ac1c65589ef354378def3ba19d401e739ee7ee06fb47f94c687016e3713d1", [:mix], [{:nimble_parsec, "~> 1.4", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "d36484867b0bae0fea568d10131197a4c2e47056a6fbe84922bf6ba71c8d17ce"},
9+
"makeup_elixir": {:hex, :makeup_elixir, "1.0.1", "e928a4f984e795e41e3abd27bfc09f51db16ab8ba1aebdba2b3a575437efafc2", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}, {:nimble_parsec, "~> 1.2.3 or ~> 1.3", [hex: :nimble_parsec, repo: "hexpm", optional: false]}], "hexpm", "7284900d412a3e5cfd97fdaed4f5ed389b8f2b4cb49efc0eb3bd10e2febf9507"},
10+
"makeup_erlang": {:hex, :makeup_erlang, "1.0.2", "03e1804074b3aa64d5fad7aa64601ed0fb395337b982d9bcf04029d68d51b6a7", [:mix], [{:makeup, "~> 1.0", [hex: :makeup, repo: "hexpm", optional: false]}], "hexpm", "af33ff7ef368d5893e4a267933e7744e46ce3cf1f61e2dccf53a111ed3aa3727"},
11+
"mime": {:hex, :mime, "2.0.6", "8f18486773d9b15f95f4f4f1e39b710045fa1de891fada4516559967276e4dc2", [:mix], [], "hexpm", "c9945363a6b26d747389aac3643f8e0e09d30499a138ad64fe8fd1d13d9b153e"},
12+
"nimble_parsec": {:hex, :nimble_parsec, "1.4.2", "8efba0122db06df95bfaa78f791344a89352ba04baedd3849593bfce4d0dc1c6", [:mix], [], "hexpm", "4b21398942dda052b403bbe1da991ccd03a053668d147d53fb8c4e0efe09c973"},
13+
"phoenix": {:hex, :phoenix, "1.7.19", "36617efe5afbd821099a8b994ff4618a340a5bfb25531a1802c4d4c634017a57", [:mix], [{:castore, ">= 0.0.0", [hex: :castore, repo: "hexpm", optional: false]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix_pubsub, "~> 2.1", [hex: :phoenix_pubsub, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.7", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:plug_crypto, "~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}, {:websock_adapter, "~> 0.5.3", [hex: :websock_adapter, repo: "hexpm", optional: false]}], "hexpm", "ba4dc14458278773f905f8ae6c2ec743d52c3a35b6b353733f64f02dfe096cd6"},
14+
"phoenix_html": {:hex, :phoenix_html, "4.2.0", "83a4d351b66f472ebcce242e4ae48af1b781866f00ef0eb34c15030d4e2069ac", [:mix], [], "hexpm", "9713b3f238d07043583a94296cc4bbdceacd3b3a6c74667f4df13971e7866ec8"},
15+
"phoenix_live_view": {:hex, :phoenix_live_view, "0.20.17", "f396bbdaf4ba227b82251eb75ac0afa6b3da5e509bc0d030206374237dfc9450", [:mix], [{:floki, "~> 0.36", [hex: :floki, repo: "hexpm", optional: true]}, {:jason, "~> 1.0", [hex: :jason, repo: "hexpm", optional: true]}, {:phoenix, "~> 1.6.15 or ~> 1.7.0", [hex: :phoenix, repo: "hexpm", optional: false]}, {:phoenix_html, "~> 3.3 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: false]}, {:phoenix_template, "~> 1.0", [hex: :phoenix_template, repo: "hexpm", optional: false]}, {:phoenix_view, "~> 2.0", [hex: :phoenix_view, repo: "hexpm", optional: true]}, {:plug, "~> 1.15", [hex: :plug, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.2 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a61d741ffb78c85fdbca0de084da6a48f8ceb5261a79165b5a0b59e5f65ce98b"},
16+
"phoenix_pubsub": {:hex, :phoenix_pubsub, "2.1.3", "3168d78ba41835aecad272d5e8cd51aa87a7ac9eb836eabc42f6e57538e3731d", [:mix], [], "hexpm", "bba06bc1dcfd8cb086759f0edc94a8ba2bc8896d5331a1e2c2902bf8e36ee502"},
17+
"phoenix_template": {:hex, :phoenix_template, "1.0.4", "e2092c132f3b5e5b2d49c96695342eb36d0ed514c5b252a77048d5969330d639", [:mix], [{:phoenix_html, "~> 2.14.2 or ~> 3.0 or ~> 4.0", [hex: :phoenix_html, repo: "hexpm", optional: true]}], "hexpm", "2c0c81f0e5c6753faf5cca2f229c9709919aba34fab866d3bc05060c9c444206"},
18+
"plug": {:hex, :plug, "1.16.1", "40c74619c12f82736d2214557dedec2e9762029b2438d6d175c5074c933edc9d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:plug_crypto, "~> 1.1.1 or ~> 1.2 or ~> 2.0", [hex: :plug_crypto, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4.3 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "a13ff6b9006b03d7e33874945b2755253841b238c34071ed85b0e86057f8cddc"},
19+
"plug_crypto": {:hex, :plug_crypto, "2.1.0", "f44309c2b06d249c27c8d3f65cfe08158ade08418cf540fd4f72d4d6863abb7b", [:mix], [], "hexpm", "131216a4b030b8f8ce0f26038bc4421ae60e4bb95c5cf5395e1421437824c4fa"},
20+
"sourceror": {:hex, :sourceror, "1.7.1", "599d78f4cc2be7d55c9c4fd0a8d772fd0478e3a50e726697c20d13d02aa056d4", [:mix], [], "hexpm", "cd6f268fe29fa00afbc535e215158680a0662b357dc784646d7dff28ac65a0fc"},
21+
"telemetry": {:hex, :telemetry, "1.3.0", "fedebbae410d715cf8e7062c96a1ef32ec22e764197f70cda73d82778d61e7a2", [:rebar3], [], "hexpm", "7015fc8919dbe63764f4b4b87a95b7c0996bd539e0d499be6ec9d7f3875b79e6"},
22+
"websock": {:hex, :websock, "0.5.3", "2f69a6ebe810328555b6fe5c831a851f485e303a7c8ce6c5f675abeb20ebdadc", [:mix], [], "hexpm", "6105453d7fac22c712ad66fab1d45abdf049868f253cf719b625151460b8b453"},
23+
"websock_adapter": {:hex, :websock_adapter, "0.5.8", "3b97dc94e407e2d1fc666b2fb9acf6be81a1798a2602294aac000260a7c4a47d", [:mix], [{:bandit, ">= 0.6.0", [hex: :bandit, repo: "hexpm", optional: true]}, {:plug, "~> 1.14", [hex: :plug, repo: "hexpm", optional: false]}, {:plug_cowboy, "~> 2.6", [hex: :plug_cowboy, repo: "hexpm", optional: true]}, {:websock, "~> 0.5", [hex: :websock, repo: "hexpm", optional: false]}], "hexpm", "315b9a1865552212b5f35140ad194e67ce31af45bcee443d4ecb96b5fd3f3782"},
24+
}

lib/mix/tasks/surface/surface.init/patcher.ex

+20-18
Original file line numberDiff line numberDiff line change
@@ -136,33 +136,35 @@ defmodule Mix.Tasks.Surface.Init.Patcher do
136136
end
137137

138138
defp to_results(patches, status, file) do
139-
Enum.map(patches, fn patch_spec ->
139+
for patch_spec <- patches, status not in Map.get(patch_spec, :ignore_when, []) do
140140
{status, file, patch_spec}
141-
end)
141+
end
142142
end
143143

144144
defp log(action, file, fun) do
145-
prefix = "* #{action} "
146-
Mix.shell().info([:green, prefix, :reset, file])
147-
148145
result = fun.()
149146

150-
skipped_postfix =
151-
case result |> List.wrap() |> Enum.split_with(&match?({:patched, _, _}, &1)) do
152-
{[], _not_patched} ->
153-
[:yellow, " (skipped)", :reset]
147+
if result != [] do
148+
prefix = "* #{action} "
149+
Mix.shell().info([:green, prefix, :reset, file])
154150

155-
{_patched, []} ->
156-
[]
151+
skipped_postfix =
152+
case result |> List.wrap() |> Enum.split_with(&match?({:patched, _, _}, &1)) do
153+
{[], _not_patched} ->
154+
[:yellow, " (skipped)", :reset]
157155

158-
{patched, not_patched} ->
159-
n_not_patched = length(not_patched)
160-
total = n_not_patched + length(patched)
161-
[:yellow, " (skipped #{n_not_patched} of #{total} changes)", :reset]
162-
end
156+
{_patched, []} ->
157+
[]
163158

164-
if skipped_postfix != [] do
165-
Mix.shell().info([IO.ANSI.cursor_up(), :clear_line, :yellow, prefix, :reset, file] ++ skipped_postfix)
159+
{patched, not_patched} ->
160+
n_not_patched = length(not_patched)
161+
total = n_not_patched + length(patched)
162+
[:yellow, " (skipped #{n_not_patched} of #{total} changes)", :reset]
163+
end
164+
165+
if skipped_postfix != [] do
166+
Mix.shell().info([IO.ANSI.cursor_up(), :clear_line, :yellow, prefix, :reset, file] ++ skipped_postfix)
167+
end
166168
end
167169

168170
result

lib/mix/tasks/surface/surface.init/project_patchers/docker.ex

+2-1
Original file line numberDiff line numberDiff line change
@@ -15,8 +15,9 @@ defmodule Mix.Tasks.Surface.Init.ProjectPatchers.Docker do
1515
def swap_assets_deploy_with_compile() do
1616
%{
1717
name: "Run mix compile before mix assets.deploy",
18+
ignore_when: [:file_not_found],
1819
instructions: """
19-
Update `Dockerfile` so that `mix compile` is before `mix assets.deploy`.
20+
Update `Dockerfile` so that `mix compile` is called before `mix assets.deploy`.
2021
2122
# Example
2223

lib/surface/compiler/parser.ex

-2
Original file line numberDiff line numberDiff line change
@@ -385,9 +385,7 @@ defmodule Surface.Compiler.Parser do
385385
end
386386

387387
defp node_type({:tag_open, _, _, _}), do: "tag"
388-
defp node_type({:tag_close, _, _}), do: "tag"
389388
defp node_type({:block_open, _, _, _}), do: "block"
390-
defp node_type({:block_close, _, _}), do: "block"
391389

392390
defp format_node({:tag_open, name, _attrs, _meta}), do: "<#{name}>"
393391
defp format_node({:tag_close, name, _meta}), do: "</#{name}>"

mix.exs

+1-1
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ defmodule Surface.MixProject do
4343
# Run "mix help deps" to learn about dependencies.
4444
defp deps do
4545
[
46-
{:phoenix_live_view, "~> 0.19.0 or ~> 0.20.10"},
46+
{:phoenix_live_view, "~> 0.19.0 or ~> 0.20.10 or ~> 1.0"},
4747
{:sourceror, "~> 1.0"},
4848
{:blend, "~> 0.3.0", only: :dev},
4949
{:jason, "~> 1.0", only: :test},

0 commit comments

Comments
 (0)