Skip to content

default: [] not working in umbrella release #156

@artospaj

Description

@artospaj

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions