From 17a683dada090ecc1ab18d9937344c279c738fcc Mon Sep 17 00:00:00 2001 From: Santiago Ferreira Date: Fri, 24 Oct 2025 12:40:01 -0300 Subject: [PATCH] Allow nested maps for Package's "extra" field --- lib/mix/tasks/hex.build.ex | 3 ++- test/mix/tasks/hex.publish_test.exs | 2 +- test/support/release_samples.ex | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/lib/mix/tasks/hex.build.ex b/lib/mix/tasks/hex.build.ex index aba3cb25..2c91011b 100644 --- a/lib/mix/tasks/hex.build.ex +++ b/lib/mix/tasks/hex.build.ex @@ -371,7 +371,8 @@ defmodule Mix.Tasks.Hex.Build do end defp format_metadata_value(map) when is_map(map) do - "\n " <> Enum.map_join(map, "\n ", fn {key, val} -> "#{key}: #{val}" end) + "\n " <> + Enum.map_join(map, "\n ", fn {key, val} -> "#{key}: #{format_metadata_value(val)}" end) end defp format_metadata_value(value) do diff --git a/test/mix/tasks/hex.publish_test.exs b/test/mix/tasks/hex.publish_test.exs index b910673b..127e0d82 100644 --- a/test/mix/tasks/hex.publish_test.exs +++ b/test/mix/tasks/hex.publish_test.exs @@ -540,7 +540,7 @@ defmodule Mix.Tasks.Hex.PublishTest do assert_received {:mix_shell, :info, ["Building publish_with_metadata 0.0.3"]} assert_received {:mix_shell, :info, [" Files:"]} assert_received {:mix_shell, :info, [" myfile.txt"]} - assert_received {:mix_shell, :info, [" Extra: \n c: d"]} + assert_received {:mix_shell, :info, [" Extra: \n c: \n d: e"]} assert_received {:mix_shell, :info, ["Publishing package using http://" <> _]} diff --git a/test/support/release_samples.ex b/test/support/release_samples.ex index b963c1c2..68e43f7e 100644 --- a/test/support/release_samples.ex +++ b/test/support/release_samples.ex @@ -87,7 +87,7 @@ defmodule ReleaseMeta.MixProject do files: ["myfile.txt", "missing.txt", "missing/*"], licenses: ["Apache-2.0"], links: %{"a" => "http://a"}, - extra: %{"c" => "d"} + extra: %{"c" => %{"d" => "e"}} ] ] end