Refactor copypasta to a private function in instance.ex

This commit is contained in:
Rin Toshaka 2018-12-02 20:04:33 +01:00
parent cbe22deb51
commit d924b6cd3d
1 changed files with 36 additions and 34 deletions

View File

@ -59,49 +59,37 @@ def run(["new" | rest]) do
unless not proceed? do
domain =
Keyword.get(options, :domain) ||
Mix.shell().prompt("What domain will your instance use? (e.g. pleroma.soykaf.com)")
|> String.trim()
get_option(
options,
:domain,
"What domain will your instance use? (e.g pleroma.soykaf.com)"
)
name =
Keyword.get(options, :name) ||
Mix.shell().prompt("What is the name of your instance? (e.g. Pleroma/Soykaf)")
|> String.trim()
get_option(options, :name, "What is the name of your instance? (e.g. Pleroma/Soykaf)")
email =
Keyword.get(options, :admin_email) ||
Mix.shell().prompt("What is your admin email address?")
|> String.trim()
email = get_option(options, :admin_email, "What is your admin email address?")
dbhost =
Keyword.get(options, :dbhost) ||
case Mix.shell().prompt("What is the hostname of your database? [localhost]") do
"\n" -> "localhost"
dbhost -> dbhost |> String.trim()
end
dbhost = get_option(options, :dbhost, "What is the hostname of your database?", "localhost")
dbname =
Keyword.get(options, :dbname) ||
case Mix.shell().prompt("What is the name of your database? [pleroma_dev]") do
"\n" -> "pleroma_dev"
dbname -> dbname |> String.trim()
end
dbname = get_option(options, :dbname, "What is the name of your database?", "pleroma_dev")
dbuser =
Keyword.get(options, :dbuser) ||
case Mix.shell().prompt("What is the user used to connect to your database? [pleroma]") do
"\n" -> "pleroma"
dbuser -> dbuser |> String.trim()
end
get_option(
options,
:dbuser,
"What is the user used to connect to your database?",
"pleroma"
)
dbpass =
Keyword.get(options, :dbpass) ||
case Mix.shell().prompt(
"What is the password used to connect to your database? [autogenerated]"
) do
"\n" -> :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
dbpass -> dbpass |> String.trim()
end
get_option(
options,
:dbpass,
"What is the password used to connect to your database?",
:crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64),
"autogenerated"
)
secret = :crypto.strong_rand_bytes(64) |> Base.encode64() |> binary_part(0, 64)
@ -160,4 +148,18 @@ def run(["new" | rest]) do
defp escape_sh_path(path) do
~S(') <> String.replace(path, ~S('), ~S(\')) <> ~S(')
end
defp get_option(options, opt, prompt, def \\ nil, defname \\ nil) do
Keyword.get(options, opt) ||
case Mix.shell().prompt("#{prompt} [#{defname || def}]") do
"\n" ->
case def do
nil -> get_option(options, opt, prompt, def)
def -> def
end
opt ->
opt |> String.trim()
end
end
end