diff options
author | rinpatch <rinpatch@sdf.org> | 2019-06-20 02:05:19 +0300 |
---|---|---|
committer | rinpatch <rinpatch@sdf.org> | 2019-06-20 02:08:02 +0300 |
commit | 8c7a382027b3cf3bf4815a7b0ce753b6e7c7afa5 (patch) | |
tree | 3829c13c4b59310ea83f131dcb247314dbeb4164 /lib/mix/pleroma.ex | |
parent | 524a66806d21ace82d3edab5e25eecb076a00305 (diff) | |
download | pleroma-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.ex | 63 |
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 |