2019-06-19 10:33:33 +00:00
|
|
|
# Pleroma: A lightweight social networking server
|
2023-01-01 11:11:47 +00:00
|
|
|
# Copyright © 2017-2023 Pleroma Authors <https://pleroma.social/>
|
2022-02-26 06:11:42 +00:00
|
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
2019-06-19 10:33:33 +00:00
|
|
|
|
|
|
|
defmodule Mix.Tasks.Pleroma.Ecto.Migrate do
|
|
|
|
use Mix.Task
|
2019-06-22 01:17:04 +00:00
|
|
|
import Mix.Pleroma
|
2019-06-19 10:33:33 +00:00
|
|
|
require Logger
|
|
|
|
|
|
|
|
@shortdoc "Wrapper on `ecto.migrate` task."
|
|
|
|
|
|
|
|
@aliases [
|
|
|
|
n: :step,
|
|
|
|
v: :to
|
|
|
|
]
|
|
|
|
|
|
|
|
@switches [
|
|
|
|
all: :boolean,
|
|
|
|
step: :integer,
|
|
|
|
to: :integer,
|
|
|
|
quiet: :boolean,
|
|
|
|
log_sql: :boolean,
|
|
|
|
strict_version_order: :boolean,
|
|
|
|
migrations_path: :string
|
|
|
|
]
|
|
|
|
|
|
|
|
@moduledoc """
|
|
|
|
Changes `Logger` level to `:info` before start migration.
|
|
|
|
Changes level back when migration ends.
|
|
|
|
|
|
|
|
## Start migration
|
|
|
|
|
|
|
|
mix pleroma.ecto.migrate [OPTIONS]
|
|
|
|
|
|
|
|
Options:
|
|
|
|
- see https://hexdocs.pm/ecto/2.0.0/Mix.Tasks.Ecto.Migrate.html
|
|
|
|
"""
|
|
|
|
|
|
|
|
@impl true
|
|
|
|
def run(args \\ []) do
|
2019-06-22 01:17:04 +00:00
|
|
|
load_pleroma()
|
2019-06-19 10:33:33 +00:00
|
|
|
{opts, _} = OptionParser.parse!(args, strict: @switches, aliases: @aliases)
|
|
|
|
|
2020-08-16 04:02:33 +00:00
|
|
|
if Application.get_env(:pleroma, Pleroma.Repo)[:ssl] do
|
|
|
|
Application.ensure_all_started(:ssl)
|
|
|
|
end
|
|
|
|
|
2019-06-19 10:33:33 +00:00
|
|
|
opts =
|
|
|
|
if opts[:to] || opts[:step] || opts[:all],
|
|
|
|
do: opts,
|
|
|
|
else: Keyword.put(opts, :all, true)
|
|
|
|
|
|
|
|
opts =
|
|
|
|
if opts[:quiet],
|
|
|
|
do: Keyword.merge(opts, log: false, log_sql: false),
|
|
|
|
else: opts
|
|
|
|
|
|
|
|
path = Mix.Tasks.Pleroma.Ecto.ensure_migrations_path(Pleroma.Repo, opts)
|
|
|
|
|
|
|
|
level = Logger.level()
|
|
|
|
Logger.configure(level: :info)
|
|
|
|
|
|
|
|
{:ok, _, _} = Ecto.Migrator.with_repo(Pleroma.Repo, &Ecto.Migrator.run(&1, path, :up, opts))
|
|
|
|
|
|
|
|
Logger.configure(level: level)
|
|
|
|
end
|
|
|
|
end
|