diff options
author | Alex Gleason <alex@alexgleason.me> | 2021-06-17 15:38:10 -0500 |
---|---|---|
committer | Alex Gleason <alex@alexgleason.me> | 2021-06-17 15:38:10 -0500 |
commit | 3a03d9b65f96099e7c7a831469532c2cec7294c6 (patch) | |
tree | 46d84731c3a53157117fc4c8141fdf6b3d7b8b25 /lib/mix/tasks/pleroma/config.ex | |
parent | a704d5499c03cb5609ea38a5f2ef06095ced3ef3 (diff) | |
parent | a8adc300d4cfc88ef19f1977e32068437ed4ad00 (diff) | |
download | pleroma-nsfw-api-mrf.tar.gz |
Merge remote-tracking branch 'pleroma/develop' into nsfw-api-mrfnsfw-api-mrf
Diffstat (limited to 'lib/mix/tasks/pleroma/config.ex')
-rw-r--r-- | lib/mix/tasks/pleroma/config.ex | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/lib/mix/tasks/pleroma/config.ex b/lib/mix/tasks/pleroma/config.ex index 1962154b9..22502a522 100644 --- a/lib/mix/tasks/pleroma/config.ex +++ b/lib/mix/tasks/pleroma/config.ex @@ -27,7 +27,7 @@ defmodule Mix.Tasks.Pleroma.Config do {opts, _} = OptionParser.parse!(options, - strict: [env: :string, delete: :boolean], + strict: [env: :string, delete: :boolean, path: :string], aliases: [d: :delete] ) @@ -259,18 +259,43 @@ defmodule Mix.Tasks.Pleroma.Config do defp migrate_from_db(opts) do env = opts[:env] || Pleroma.Config.get(:env) + filename = "#{env}.exported_from_db.secret.exs" + config_path = - if Pleroma.Config.get(:release) do - :config_path - |> Pleroma.Config.get() - |> Path.dirname() - else - "config" + cond do + opts[:path] -> + opts[:path] + + Pleroma.Config.get(:release) -> + :config_path + |> Pleroma.Config.get() + |> Path.dirname() + + true -> + "config" end - |> Path.join("#{env}.exported_from_db.secret.exs") + |> Path.join(filename) - file = File.open!(config_path, [:write, :utf8]) + with {:ok, file} <- File.open(config_path, [:write, :utf8]) do + write_config(file, config_path, opts) + shell_info("Database configuration settings have been exported to #{config_path}") + else + _ -> + shell_error("Impossible to save settings to this directory #{Path.dirname(config_path)}") + tmp_config_path = Path.join(System.tmp_dir!(), filename) + file = File.open!(tmp_config_path) + + shell_info( + "Saving database configuration settings to #{tmp_config_path}. Copy it to the #{ + Path.dirname(config_path) + } manually." + ) + write_config(file, tmp_config_path, opts) + end + end + + defp write_config(file, path, opts) do IO.write(file, config_header()) ConfigDB @@ -278,11 +303,7 @@ defmodule Mix.Tasks.Pleroma.Config do |> Enum.each(&write_and_delete(&1, file, opts[:delete])) :ok = File.close(file) - System.cmd("mix", ["format", config_path]) - - shell_info( - "Database configuration settings have been exported to config/#{env}.exported_from_db.secret.exs" - ) + System.cmd("mix", ["format", path]) end if Code.ensure_loaded?(Config.Reader) do |