logo

pleroma

My custom branche(s) on git.pleroma.social/pleroma/pleroma git clone https://hacktivis.me/git/pleroma.git

migrate.ex (1574B)


  1. # Pleroma: A lightweight social networking server
  2. # Copyright © 2017-2022 Pleroma Authors <https://pleroma.social/>
  3. # SPDX-License-Identifier: AGPL-3.0-only
  4. defmodule Mix.Tasks.Pleroma.Ecto.Migrate do
  5. use Mix.Task
  6. import Mix.Pleroma
  7. require Logger
  8. @shortdoc "Wrapper on `ecto.migrate` task."
  9. @aliases [
  10. n: :step,
  11. v: :to
  12. ]
  13. @switches [
  14. all: :boolean,
  15. step: :integer,
  16. to: :integer,
  17. quiet: :boolean,
  18. log_sql: :boolean,
  19. strict_version_order: :boolean,
  20. migrations_path: :string
  21. ]
  22. @moduledoc """
  23. Changes `Logger` level to `:info` before start migration.
  24. Changes level back when migration ends.
  25. ## Start migration
  26. mix pleroma.ecto.migrate [OPTIONS]
  27. Options:
  28. - see https://hexdocs.pm/ecto/2.0.0/Mix.Tasks.Ecto.Migrate.html
  29. """
  30. @impl true
  31. def run(args \\ []) do
  32. load_pleroma()
  33. {opts, _} = OptionParser.parse!(args, strict: @switches, aliases: @aliases)
  34. if Application.get_env(:pleroma, Pleroma.Repo)[:ssl] do
  35. Application.ensure_all_started(:ssl)
  36. end
  37. opts =
  38. if opts[:to] || opts[:step] || opts[:all],
  39. do: opts,
  40. else: Keyword.put(opts, :all, true)
  41. opts =
  42. if opts[:quiet],
  43. do: Keyword.merge(opts, log: false, log_sql: false),
  44. else: opts
  45. path = Mix.Tasks.Pleroma.Ecto.ensure_migrations_path(Pleroma.Repo, opts)
  46. level = Logger.level()
  47. Logger.configure(level: :info)
  48. {:ok, _, _} = Ecto.Migrator.with_repo(Pleroma.Repo, &Ecto.Migrator.run(&1, path, :up, opts))
  49. Logger.configure(level: level)
  50. end
  51. end