forked from mirrors/akkoma
8c7a382027
instead of aliasing This seems to be the convention for functions that can be reused between different mix tasks in all Elixir projects I've seen and it gets rid on an error message when someone runs mix pleroma.common Also in this commit by accident: - Move benchmark task under a proper namespace - Insert a space after the prompt
63 lines
1.7 KiB
Elixir
63 lines
1.7 KiB
Elixir
# Pleroma: A lightweight social networking server
|
|
# Copyright © 2017-2018 Pleroma Authors <https://pleroma.social/>
|
|
# SPDX-License-Identifier: AGPL-3.0-only
|
|
|
|
defmodule Mix.Pleroma do
|
|
@doc "Common functions to be reused in mix tasks"
|
|
def start_pleroma do
|
|
Application.put_env(:phoenix, :serve_endpoints, false, persistent: true)
|
|
{:ok, _} = Application.ensure_all_started(:pleroma)
|
|
end
|
|
|
|
def get_option(options, opt, prompt, defval \\ nil, defname \\ nil) do
|
|
Keyword.get(options, opt) || shell_prompt(prompt, defval, defname)
|
|
end
|
|
|
|
def shell_prompt(prompt, defval \\ nil, defname \\ nil) do
|
|
prompt_message = "#{prompt} [#{defname || defval}] "
|
|
|
|
input =
|
|
if mix_shell?(),
|
|
do: Mix.shell().prompt(prompt_message),
|
|
else: :io.get_line(prompt_message)
|
|
|
|
case input do
|
|
"\n" ->
|
|
case defval do
|
|
nil ->
|
|
shell_prompt(prompt, defval, defname)
|
|
|
|
defval ->
|
|
defval
|
|
end
|
|
|
|
input ->
|
|
String.trim(input)
|
|
end
|
|
end
|
|
|
|
def shell_yes?(message) do
|
|
if mix_shell?(),
|
|
do: Mix.shell().yes?("Continue?"),
|
|
else: shell_prompt(message, "Continue?") in ~w(Yn Y y)
|
|
end
|
|
|
|
def shell_info(message) do
|
|
if mix_shell?(),
|
|
do: Mix.shell().info(message),
|
|
else: IO.puts(message)
|
|
end
|
|
|
|
def shell_error(message) do
|
|
if mix_shell?(),
|
|
do: Mix.shell().error(message),
|
|
else: IO.puts(:stderr, message)
|
|
end
|
|
|
|
@doc "Performs a safe check whether `Mix.shell/0` is available (does not raise if Mix is not loaded)"
|
|
def mix_shell?, do: :erlang.function_exported(Mix, :shell, 0)
|
|
|
|
def escape_sh_path(path) do
|
|
~S(') <> String.replace(path, ~S('), ~S(\')) <> ~S(')
|
|
end
|
|
end
|