Packages
surgex
2.13.0
6.0.1
6.0.0
5.1.1
5.1.0
5.0.0
5.0.0-git-015aa39a
4.15.2
4.15.1
4.15.1-git-98b3
4.15.0
4.15.0-git-943e
4.15.0-git-5806
4.14.1
4.14.0
4.13.1
4.13.0
4.12.0
4.11.0
4.11.0-git-97d4
4.11.0-git-14c8
4.10.0
4.10.0-git-37f2
4.9.0
4.9.0-git-9d5f
4.8.1-git-80a7
4.8.0
4.8.0-git-fbda
4.8.0-git-e058
4.7.0
4.7.0-git-5414
4.6.1
4.6.0
4.5.0
4.4.0
4.3.0
4.2.1
4.2.0
4.1.1
4.1.1-git-9f6b
4.1.1-git-6f0cd
4.1.0
4.1.0-git-e934
4.1.0-git-8c28
4.1.0-git-56a9
4.1.0-git-55fd
4.0.0
3.2.8
3.2.7
3.2.6
3.2.5
3.2.4
3.2.3
3.2.2
3.2.1
3.2.0
retired
3.1.0
3.0.0
2.24.1
2.24.0
retired
2.23.0
2.22.0
2.21.0
2.20.1
2.20.0
2.19.0
2.18.1
2.18.0
2.17.0
2.16.0
2.15.0
2.14.0
2.13.0
2.12.1
2.12.0
2.11.0
2.10.0
2.9.0
2.8.0
2.7.0
2.6.0
2.5.1
2.5.0
2.4.0
retired
2.3.0
2.2.1
2.2.0
2.1.1
2.1.0
2.0.0
1.6.0
1.5.2
1.5.1
1.5.0
1.4.0
1.3.1
retired
1.3.0
retired
1.2.1
1.2.0
1.1.0
1.0.0
0.5.2
0.5.1
0.5.0
0.4.3
0.4.2
0.4.1
0.4.0
0.3.3
0.3.2
0.3.1
0.3.0
0.2.0
0.1.0
All Things Elixir @ Surge Ventures Inc, the creators of Fresha
Current section
Files
Jump to
Current section
Files
lib/surgex/config/patch.ex
defmodule Surgex.Config.Patch do
@moduledoc """
Patches any Mix config with `Surgex.Config`.
"""
alias Surgex.Config
@doc """
Patches current Mix config with `Surgex.Config` using preconfigured schema.
## Examples
In order to execute this extension on application start, set an appropriate config key:
config :surgex,
config_patch: [
sentry: [
environment: {:system, "SENTRY_ENVIRONEMNT"}
]
]
"""
def init do
require Logger
case Application.fetch_env(:surgex, :config_patch) do
{:ok, schema} ->
new_config = apply(schema)
Logger.info fn ->
"Patching config: #{inspect new_config}"
end
:error ->
nil
end
end
@doc """
Patches current Mix config with `Surgex.Config` using given schema.
## Examples
Surgex.Config.Patch.apply(sentry: [
environment: {:system, "SENTRY_ENVIRONEMNT"}
])
"""
def apply(schema) do
new_config = resolve(schema)
Mix.Config.persist(new_config)
new_config
end
defp resolve(tuple = {:system, _}), do: Config.parse(tuple)
defp resolve(tuple = {:system, _, _}), do: Config.parse(tuple)
defp resolve(list) when is_list(list) do
Enum.map(list, &resolve/1)
end
defp resolve({key, value}), do: {key, resolve(value)}
defp resolve(value), do: value
end