Skip to content

Commit 69b670a

Browse files
committed
fix: properly encode values added to mix project
1 parent 4f23c02 commit 69b670a

4 files changed

Lines changed: 29 additions & 2 deletions

File tree

lib/igniter.ex

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1671,7 +1671,7 @@ defmodule Igniter do
16711671
source,
16721672
igniter,
16731673
:quoted,
1674-
Sourceror.Zipper.root(zipper),
1674+
Sourceror.Zipper.topmost_root(zipper),
16751675
by: :configure
16761676
)
16771677
)

lib/igniter/project/mix_project.ex

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -256,7 +256,16 @@ defmodule Igniter.Project.MixProject do
256256
{:ok, zipper} = Common.move_upwards(zipper, &Common.node_matches_pattern?(&1, {_, _}))
257257
{:ok, Zipper.remove(zipper)}
258258

259+
{:ok, {:code, quoted}} when is_binary(quoted) ->
260+
quoted = Sourceror.parse_string!(quoted)
261+
{:ok, Common.replace_code(zipper, quoted)}
262+
259263
{:ok, {:code, quoted}} ->
264+
quoted =
265+
quoted
266+
|> Sourceror.to_string()
267+
|> Sourceror.parse_string!()
268+
260269
{:ok, Common.replace_code(zipper, quoted)}
261270

262271
other ->

mix.lock

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
"file_system": {:hex, :file_system, "1.1.0", "08d232062284546c6c34426997dd7ef6ec9f8bbd090eb91780283c9016840e8f", [:mix], [], "hexpm", "bfcf81244f416871f2a2e15c1b515287faa5db9c6bcf290222206d120b3d43f6"},
1515
"finch": {:hex, :finch, "0.19.0", "c644641491ea854fc5c1bbaef36bfc764e3f08e7185e1f084e35e0672241b76d", [:mix], [{:mime, "~> 1.0 or ~> 2.0", [hex: :mime, repo: "hexpm", optional: false]}, {:mint, "~> 1.6.2 or ~> 1.7", [hex: :mint, repo: "hexpm", optional: false]}, {:nimble_options, "~> 0.4 or ~> 1.0", [hex: :nimble_options, repo: "hexpm", optional: false]}, {:nimble_pool, "~> 1.1", [hex: :nimble_pool, repo: "hexpm", optional: false]}, {:telemetry, "~> 0.4 or ~> 1.0", [hex: :telemetry, repo: "hexpm", optional: false]}], "hexpm", "fc5324ce209125d1e2fa0fcd2634601c52a787aff1cd33ee833664a5af4ea2b6"},
1616
"git_cli": {:hex, :git_cli, "0.3.0", "a5422f9b95c99483385b976f5d43f7e8233283a47cda13533d7c16131cb14df5", [:mix], [], "hexpm", "78cb952f4c86a41f4d3511f1d3ecb28edb268e3a7df278de2faa1bd4672eaf9b"},
17-
"git_ops": {:git, "https://github.com/zachdaniel/git_ops.git", "075380d3dc81e80b37d02195184a784b0c0dd7a7", [branch: "no-igniter"]},
17+
"git_ops": {:git, "https://github.com/zachdaniel/git_ops.git", "ac7a420a855f2e7407f254055577c88b5b828632", [branch: "no-igniter"]},
1818
"glob_ex": {:hex, :glob_ex, "0.1.11", "cb50d3f1ef53f6ca04d6252c7fde09fd7a1cf63387714fe96f340a1349e62c93", [:mix], [], "hexpm", "342729363056e3145e61766b416769984c329e4378f1d558b63e341020525de4"},
1919
"ham": {:hex, :ham, "0.3.0", "7cd031b4a55fba219c11553e7b13ba73bd86eab4034518445eff1e038cb9a44d", [:mix], [], "hexpm", "7d6c6b73d7a6a83233876cc1b06a4d9b5de05562b228effda4532f9a49852bf6"},
2020
"hpax": {:hex, :hpax, "1.0.3", "ed67ef51ad4df91e75cc6a1494f851850c0bd98ebc0be6e81b026e765ee535aa", [:mix], [], "hexpm", "8eab6e1cfa8d5918c2ce4ba43588e894af35dbd8e91e6e55c817bca5847df34a"},

test/igniter/project/mix_project_test.exs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,24 @@ defmodule Igniter.Project.MixProjectTest do
2020
""")
2121
end
2222

23+
test "doesn't strip lists when setting compilers" do
24+
test_project()
25+
|> Igniter.Project.MixProject.update(:project, [:compilers], fn
26+
nil ->
27+
{:ok,
28+
{:code,
29+
quote do
30+
[:phoenix_live_view] ++ Mix.compilers()
31+
end}}
32+
33+
_zipper ->
34+
raise "nope"
35+
end)
36+
|> assert_has_patch("mix.exs", """
37+
+ | compilers: [:phoenix_live_view] ++ Mix.compilers()
38+
""")
39+
end
40+
2341
test "updates with a code tuple" do
2442
test_project()
2543
|> MixProject.update(:project, [:version], fn _zipper ->

0 commit comments

Comments
 (0)