diff options
author | lain <lain@soykaf.club> | 2019-06-10 13:03:48 +0000 |
---|---|---|
committer | lain <lain@soykaf.club> | 2019-06-10 13:03:48 +0000 |
commit | 8fd68b8039c81a4e7b6dd1232c32fa2e736b1ea2 (patch) | |
tree | 1dc9bc9e0e0e0f5ae894a9c75ae3ca45bef49808 /lib/mix/tasks/pleroma/common.ex | |
parent | 3d7bb4712436ca80b840b35c39674e2f951cecbe (diff) | |
parent | dbe4c2b7c8cfec4d8348de869a86c03015a7b7c5 (diff) | |
download | pleroma-8fd68b8039c81a4e7b6dd1232c32fa2e736b1ea2.tar.gz |
Merge branch 'feature/releases' into 'develop'
Releases
See merge request pleroma/pleroma!1261
Diffstat (limited to 'lib/mix/tasks/pleroma/common.ex')
-rw-r--r-- | lib/mix/tasks/pleroma/common.ex | 56 |
1 files changed, 45 insertions, 11 deletions
diff --git a/lib/mix/tasks/pleroma/common.ex b/lib/mix/tasks/pleroma/common.ex index 25977f656..7d50605af 100644 --- a/lib/mix/tasks/pleroma/common.ex +++ b/lib/mix/tasks/pleroma/common.ex @@ -10,19 +10,53 @@ defmodule Mix.Tasks.Pleroma.Common do end def get_option(options, opt, prompt, defval \\ nil, defname \\ nil) do - Keyword.get(options, opt) || - case Mix.shell().prompt("#{prompt} [#{defname || defval}]") do - "\n" -> - case defval do - nil -> get_option(options, opt, prompt, defval) - defval -> defval - end - - opt -> - opt |> String.trim() - end + 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 |