summaryrefslogtreecommitdiff
path: root/lib/mix/pleroma.ex
diff options
context:
space:
mode:
authorrinpatch <rinpatch@sdf.org>2019-06-20 02:05:19 +0300
committerrinpatch <rinpatch@sdf.org>2019-06-20 02:08:02 +0300
commit8c7a382027b3cf3bf4815a7b0ce753b6e7c7afa5 (patch)
tree3829c13c4b59310ea83f131dcb247314dbeb4164 /lib/mix/pleroma.ex
parent524a66806d21ace82d3edab5e25eecb076a00305 (diff)
downloadpleroma-8c7a382027b3cf3bf4815a7b0ce753b6e7c7afa5.tar.gz
pleroma-8c7a382027b3cf3bf4815a7b0ce753b6e7c7afa5.zip
Rename Pleroma.Mix.Tasks.Common -> Mix.Pleroma and import it's functions
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
Diffstat (limited to 'lib/mix/pleroma.ex')
-rw-r--r--lib/mix/pleroma.ex63
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex
new file mode 100644
index 000000000..548c8a0a4
--- /dev/null
+++ b/lib/mix/pleroma.ex
@@ -0,0 +1,63 @@
+# 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