98449b9cfd
Signed-off-by: Thomas Citharel <tcit@tcit.fr>
57 lines
1.2 KiB
Elixir
57 lines
1.2 KiB
Elixir
# Portions of this file are derived from Pleroma:
|
|
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2020 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Mobilizon.CLI do
|
|
@moduledoc """
|
|
CLI wrapper for releases
|
|
"""
|
|
alias Mix.Tasks.Mobilizon.Ecto.{Migrate, Rollback}
|
|
|
|
@spec run(String.t()) :: any()
|
|
def run(args) do
|
|
[task | args] = String.split(args)
|
|
|
|
case task do
|
|
"migrate" -> migrate(args)
|
|
"rollback" -> rollback(args)
|
|
task -> mix_task(task, args)
|
|
end
|
|
end
|
|
|
|
defp mix_task(task, args) do
|
|
Application.load(:mobilizon)
|
|
{:ok, modules} = :application.get_key(:mobilizon, :modules)
|
|
|
|
module =
|
|
Enum.find(modules, fn module ->
|
|
module = Module.split(module)
|
|
|
|
case module do
|
|
["Mix", "Tasks", "Mobilizon" | rest] ->
|
|
String.downcase(Enum.join(rest, ".")) == task
|
|
|
|
_ ->
|
|
false
|
|
end
|
|
end)
|
|
|
|
if module do
|
|
module.run(args)
|
|
else
|
|
IO.puts("The task #{task} does not exist")
|
|
end
|
|
end
|
|
|
|
@spec migrate(any()) :: any()
|
|
defp migrate(args) do
|
|
Migrate.run(args)
|
|
end
|
|
|
|
@spec rollback(any()) :: any()
|
|
defp rollback(args) do
|
|
Rollback.run(args)
|
|
end
|
|
end
|