conform icon indicating copy to clipboard operation
conform copied to clipboard

`default: []` not working in umbrella release

Open artospaj opened this issue 7 years ago • 0 comments

Version: 2.5.2

I have umbrella release with multiple *.schema.exs files. When I define mapping key:

[
  mappings: [
    "message_broker.publishing": [
      commented: false,
      hidden: true,
      datatype: [list: :binary],
      default: [],
      required: false,
      env_var: "MESSAGE_BROKER_PUBLISHING_EVENTS"
    ]

then the resulting, merged schema file, after mix release contains:

[
  mappings: [
    "message_broker.publishing": [
      commented: false,
      datatype: [
        list: :binary
      ],
      env_var: "MESSAGE_BROKER_PUBLISHING_EVENTS",
      hidden: false
    ]

I investigated the case and found out that this code might be the cause of the problem:

defp to_list(%Conform.Schema.Mapping{name: name} = mapping) do
    props = mapping
            |> Map.to_list
            |> Keyword.delete(:__struct__)
            |> Keyword.delete(:name)
            |> Keyword.delete(:persist)
            |> Enum.filter(fn
              {_, ignore} when ignore in [nil, "", []] -> false
              _ -> true
            end)
    {String.to_atom(name), props}
  end

Precisely - the part with Enum.filter call.

artospaj avatar Jul 25 '18 10:07 artospaj