Skip to content

Commit 0152025

Browse files
committed
Add support for gleam dev_dependencies
1 parent 356afbe commit 0152025

2 files changed

Lines changed: 37 additions & 4 deletions

File tree

lib/mix/lib/mix/gleam.ex

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,14 @@ defmodule Mix.Gleam do
3131
|> Enum.map(&parse_dep!/1)
3232

3333
dev_deps =
34-
Map.get(json, "dev-dependencies", %{})
34+
case Map.has_key?(json, "dev_dependencies") do
35+
true ->
36+
Map.get(json, "dev_dependencies", %{})
37+
38+
# Old format, for compatibility purposes
39+
false ->
40+
Map.get(json, "dev-dependencies", %{})
41+
end
3542
|> Enum.map(&parse_dep!(&1, only: [:dev, :test]))
3643

3744
with {:ok, name} <- Map.fetch(json, "name"),
@@ -122,7 +129,7 @@ defmodule Mix.Gleam do
122129

123130
defp fetch_gleam_version() do
124131
case gleam(["--version"]) do
125-
{:ok, version} ->
132+
{:ok, "gleam " <> version} ->
126133
case Version.parse(version) do
127134
{:ok, parsed_version} ->
128135
{:ok, Version.to_string(parsed_version)}

lib/mix/test/mix/gleam_test.exs

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ defmodule Mix.GleamTest do
3838

3939
describe "Gleam export package-information format" do
4040
test "parse_config" do
41-
config =
41+
{:ok, config} =
4242
%{
4343
"name" => "gael",
4444
"version" => "1.0.0",
@@ -47,7 +47,7 @@ defmodule Mix.GleamTest do
4747
"git_dep" => %{"git" => "../git_dep", "ref" => "957b83b"},
4848
"gleam_stdlib" => %{"version" => ">= 0.18.0 and < 2.0.0"}
4949
},
50-
"dev-dependencies" => %{
50+
"dev_dependencies" => %{
5151
"gleeunit" => %{"version" => ">= 1.0.0 and < 2.0.0"}
5252
},
5353
"erlang" => %{
@@ -72,6 +72,32 @@ defmodule Mix.GleamTest do
7272
]
7373
}
7474
end
75+
76+
test "with old dev-dependencies format" do
77+
{:ok, config} =
78+
%{
79+
"name" => "gael",
80+
"version" => "1.0.0",
81+
"gleam" => ">= 1.8.0",
82+
"dependencies" => %{
83+
"gleam_stdlib" => %{"version" => ">= 0.18.0 and < 2.0.0"}
84+
},
85+
"dev-dependencies" => %{
86+
"gleeunit" => %{"version" => ">= 1.0.0 and < 2.0.0"}
87+
}
88+
}
89+
|> Mix.Gleam.parse_config()
90+
91+
assert config == %{
92+
name: "gael",
93+
version: "1.0.0",
94+
gleam: ">= 1.8.0",
95+
deps: [
96+
{:gleam_stdlib, ">= 0.18.0 and < 2.0.0"},
97+
{:gleeunit, ">= 1.0.0 and < 2.0.0", only: [:dev, :test]}
98+
]
99+
}
100+
end
75101
end
76102

77103
describe "integration with Mix" do

0 commit comments

Comments
 (0)