diff options
| -rw-r--r-- | config/releases.exs | 31 | ||||
| -rw-r--r-- | lib/pleroma/config/holder.ex | 19 | ||||
| -rw-r--r-- | lib/pleroma/config/release_runtime_provider.ex | 50 | ||||
| -rw-r--r-- | mix.exs | 3 | 
4 files changed, 65 insertions, 38 deletions
diff --git a/config/releases.exs b/config/releases.exs deleted file mode 100644 index 19636765f..000000000 --- a/config/releases.exs +++ /dev/null @@ -1,31 +0,0 @@ -import Config - -config :pleroma, :instance, static_dir: "/var/lib/pleroma/static" -config :pleroma, Pleroma.Uploaders.Local, uploads: "/var/lib/pleroma/uploads" -config :pleroma, :modules, runtime_dir: "/var/lib/pleroma/modules" - -config_path = System.get_env("PLEROMA_CONFIG_PATH") || "/etc/pleroma/config.exs" - -config :pleroma, release: true, config_path: config_path - -if File.exists?(config_path) do -  import_config config_path -else -  warning = [ -    IO.ANSI.red(), -    IO.ANSI.bright(), -    "!!! #{config_path} not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file", -    IO.ANSI.reset() -  ] - -  IO.puts(warning) -end - -exported_config = -  config_path -  |> Path.dirname() -  |> Path.join("prod.exported_from_db.secret.exs") - -if File.exists?(exported_config) do -  import_config exported_config -end diff --git a/lib/pleroma/config/holder.ex b/lib/pleroma/config/holder.ex index f037d5d48..a99fc0471 100644 --- a/lib/pleroma/config/holder.ex +++ b/lib/pleroma/config/holder.ex @@ -9,12 +9,7 @@ defmodule Pleroma.Config.Holder do    def save_default do      default_config =        if System.get_env("RELEASE_NAME") do -        release_config = -          [:code.root_dir(), "releases", System.get_env("RELEASE_VSN"), "releases.exs"] -          |> Path.join() -          |> Pleroma.Config.Loader.read() - -        Pleroma.Config.Loader.merge(@config, release_config) +        Pleroma.Config.Loader.merge(@config, release_defaults())        else          @config        end @@ -32,4 +27,16 @@ defmodule Pleroma.Config.Holder do    def default_config(group, key), do: get_in(get_default(), [group, key])    defp get_default, do: Pleroma.Config.get(:default_config) + +  @spec release_defaults() :: keyword() +  def release_defaults do +    [ +      pleroma: [ +        {:instance, [static_dir: "/var/lib/pleroma/static"]}, +        {Pleroma.Uploaders.Local, [uploads: "/var/lib/pleroma/uploads"]}, +        {:modules, [runtime_dir: "/var/lib/pleroma/modules"]}, +        {:release, true} +      ] +    ] +  end  end diff --git a/lib/pleroma/config/release_runtime_provider.ex b/lib/pleroma/config/release_runtime_provider.ex new file mode 100644 index 000000000..8227195dc --- /dev/null +++ b/lib/pleroma/config/release_runtime_provider.ex @@ -0,0 +1,50 @@ +defmodule Pleroma.Config.ReleaseRuntimeProvider do +  @moduledoc """ +  Imports `runtime.exs` and `{env}.exported_from_db.secret.exs` for elixir releases. +  """ +  @behaviour Config.Provider + +  @impl true +  def init(opts), do: opts + +  @impl true +  def load(config, _opts) do +    with_defaults = Config.Reader.merge(config, Pleroma.Config.Holder.release_defaults()) + +    config_path = System.get_env("PLEROMA_CONFIG_PATH") || "/etc/pleroma/config.exs" + +    with_runtime_config = +      if File.exists?(config_path) do +        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(), +          "!!! #{config_path} not found! Please ensure it exists and that PLEROMA_CONFIG_PATH is unset or points to an existing file", +          IO.ANSI.reset() +        ] + +        IO.puts(warning) +        with_defaults +      end + +    exported_config_path = +      config_path +      |> Path.dirname() +      |> Path.join("prod.exported_from_db.secret.exs") + +    with_exported = +      if File.exists?(exported_config_path) do +        exported_config = Config.Reader.read!(with_runtime_config) +        Config.Reader.merge(with_runtime_config, exported_config) +      else +        with_runtime_config +      end + +    with_exported +  end +end @@ -37,7 +37,8 @@ defmodule Pleroma.Mixfile do          pleroma: [            include_executables_for: [:unix],            applications: [ex_syslogger: :load, syslog: :load, eldap: :transient], -          steps: [:assemble, &put_otp_version/1, ©_files/1, ©_nginx_config/1] +          steps: [:assemble, &put_otp_version/1, ©_files/1, ©_nginx_config/1], +          config_providers: [{Pleroma.Config.ReleaseRuntimeProvider, nil}]          ]        ]      ]  | 
