2020-11-24 15:44:48 +00:00
defmodule Pleroma.Config.ReleaseRuntimeProvider do
@moduledoc """
2021-03-27 06:05:33 +00:00
Imports runtime config and ` { env } . exported_from_db . secret . exs ` for releases .
2020-11-24 15:44:48 +00:00
"""
@behaviour Config.Provider
@impl true
def init ( opts ) , do : opts
@impl true
2021-03-27 06:05:33 +00:00
def load ( config , opts ) do
2020-11-24 15:44:48 +00:00
with_defaults = Config.Reader . merge ( config , Pleroma.Config.Holder . release_defaults ( ) )
2021-04-08 12:45:31 +00:00
config_path =
2022-07-06 18:28:41 +00:00
cond do
opts [ :config_path ] -> opts [ :config_path ]
System . get_env ( " AKKOMA_CONFIG_PATH " ) -> System . get_env ( " AKKOMA_CONFIG_PATH " )
2022-08-03 10:52:21 +00:00
System . get_env ( " PLEROMA_CONFIG_PATH " ) -> System . get_env ( " PLEROMA_CONFIG_PATH " )
File . exists? ( " /etc/pleroma/config.exs " ) -> " /etc/pleroma/config.exs "
true -> " /etc/akkoma/config.exs "
2022-07-06 18:28:41 +00:00
end
2020-11-24 15:44:48 +00:00
with_runtime_config =
2021-04-08 12:45:31 +00:00
if File . exists? ( config_path ) do
2020-11-24 15:44:48 +00:00
runtime_config = Config.Reader . read! ( config_path )
with_defaults
|> Config.Reader . merge ( pleroma : [ config_path : config_path ] )
|> Config.Reader . merge ( runtime_config )
else
warning = [
IO.ANSI . red ( ) ,
IO.ANSI . bright ( ) ,
2022-08-03 10:52:21 +00:00
" !!! Config path is not declared! Please ensure it exists and that AKKOMA_CONFIG_PATH and/or PLEROMA_CONFIG_PATH is unset or points to an existing file " ,
2020-11-24 15:44:48 +00:00
IO.ANSI . reset ( )
]
IO . puts ( warning )
with_defaults
end
2021-04-08 12:45:31 +00:00
exported_config_path =
opts [ :exported_config_path ] ||
config_path
|> Path . dirname ( )
|> Path . join ( " #{ Pleroma.Config . get ( :env ) } .exported_from_db.secret.exs " )
2020-11-24 15:44:48 +00:00
with_exported =
2021-04-08 12:45:31 +00:00
if File . exists? ( exported_config_path ) do
2021-03-26 16:19:19 +00:00
exported_config = Config.Reader . read! ( exported_config_path )
2020-11-24 15:44:48 +00:00
Config.Reader . merge ( with_runtime_config , exported_config )
else
with_runtime_config
end
with_exported
end
end