defmodule GenerateConfig do require Logger def create_config_files do with {:ok, content} <- File.read("./deps/elixir_structure_manager/lib/parameters/create_structure.json"), {:ok, parsed} <- Poison.decode(content), normalized <- normalize(parsed) do create_content("new_folder") IO.inspect(normalized) else err -> Logger.error("Error loading consumers #{inspect(err)}") err end end def create_content(name) do Logger.info("creating directory") File.mkdir_p(Path.dirname("./lib/folder/#{name}.exs")) |> IO.inspect() end def normalize(%{__struct__: _} = value), do: value def normalize(%{} = map) do Logger.info("Normalized") Map.to_list(map) |> Enum.map(fn {key, value} -> {String.to_atom(key), normalize(value)} end) |> Enum.into(%{}) end def normalize(value) when is_list(value), do: Enum.map(value, &normalize/1) def normalize(value), do: value end