From: Rin Toshaka Date: Thu, 6 Dec 2018 17:00:24 +0000 (+0100) Subject: Refactor common functions to common.ex X-Git-Url: https://git.squeep.com/?a=commitdiff_plain;h=4a2a7ce636ac4616ec71665b4af4ee0ab884ac15;p=akkoma Refactor common functions to common.ex --- diff --git a/lib/mix/tasks/pleroma/instance.ex b/lib/mix/tasks/pleroma/instance.ex index eb578644d..88fc3ba75 100644 --- a/lib/mix/tasks/pleroma/instance.ex +++ b/lib/mix/tasks/pleroma/instance.ex @@ -1,6 +1,7 @@ defmodule Mix.Tasks.Pleroma.Instance do use Mix.Task alias Pleroma.{Repo, User} + alias Mix.Tasks.Pleroma.Common @shortdoc "Manages Pleroma instance" @moduledoc """ @@ -59,23 +60,23 @@ defmodule Mix.Tasks.Pleroma.Instance do unless not proceed? do domain = - get_option( + Common.get_option( options, :domain, "What domain will your instance use? (e.g pleroma.soykaf.com)" ) name = - get_option(options, :name, "What is the name of your instance? (e.g. Pleroma/Soykaf)") + Common.get_option(options, :name, "What is the name of your instance? (e.g. Pleroma/Soykaf)") - email = get_option(options, :admin_email, "What is your admin email address?") + email = Common.get_option(options, :admin_email, "What is your admin email address?") - dbhost = get_option(options, :dbhost, "What is the hostname of your database?", "localhost") + dbhost = Common.get_option(options, :dbhost, "What is the hostname of your database?", "localhost") - dbname = get_option(options, :dbname, "What is the name of your database?", "pleroma_dev") + dbname = Common.get_option(options, :dbname, "What is the name of your database?", "pleroma_dev") dbuser = - get_option( + Common.get_option( options, :dbuser, "What is the user used to connect to your database?", @@ -83,7 +84,7 @@ defmodule Mix.Tasks.Pleroma.Instance do ) dbpass = - get_option( + Common.get_option( options, :dbpass, "What is the password used to connect to your database?", @@ -128,12 +129,12 @@ defmodule Mix.Tasks.Pleroma.Instance do """ To get started: 1. Verify the contents of the generated files. - 2. Run `sudo -u postgres psql -f #{escape_sh_path(psql_path)}`. + 2. Run `sudo -u postgres psql -f #{Common.escape_sh_path(psql_path)}`. """ <> if config_path in ["config/dev.secret.exs", "config/prod.secret.exs"] do "" else - "3. Run `mv #{escape_sh_path(config_path)} 'config/prod.secret.exs'`." + "3. Run `mv #{Common.escape_sh_path(config_path)} 'config/prod.secret.exs'`." end ) else @@ -145,21 +146,6 @@ defmodule Mix.Tasks.Pleroma.Instance do end end - 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 diff --git a/lib/mix/tasks/pleroma/relay.ex b/lib/mix/tasks/pleroma/relay.ex index eaaded5cb..828c7cd3d 100644 --- a/lib/mix/tasks/pleroma/relay.ex +++ b/lib/mix/tasks/pleroma/relay.ex @@ -1,6 +1,7 @@ defmodule Mix.Tasks.Pleroma.Relay do use Mix.Task alias Pleroma.Web.ActivityPub.Relay + alias Mix.Tasks.Pleroma.Common @shortdoc "Manages remote relays" @moduledoc """ @@ -19,8 +20,7 @@ defmodule Mix.Tasks.Pleroma.Relay do Example: ``mix pleroma.relay unfollow https://example.org/relay`` """ def run(["follow", target]) do - Mix.Task.run("app.start") - + Common.start_pleroma with {:ok, activity} <- Relay.follow(target) do # put this task to sleep to allow the genserver to push out the messages :timer.sleep(500) @@ -30,7 +30,7 @@ defmodule Mix.Tasks.Pleroma.Relay do end def run(["unfollow", target]) do - Mix.Task.run("app.start") + Common.start_pleroma with {:ok, activity} <- Relay.follow(target) do # put this task to sleep to allow the genserver to push out the messages diff --git a/lib/mix/tasks/pleroma/user.ex b/lib/mix/tasks/pleroma/user.ex index aa023aae8..82f351456 100644 --- a/lib/mix/tasks/pleroma/user.ex +++ b/lib/mix/tasks/pleroma/user.ex @@ -2,6 +2,7 @@ defmodule Mix.Tasks.Pleroma.User do use Mix.Task import Ecto.Changeset alias Pleroma.{Repo, User} + alias Mix.Tasks.Pleroma.Common @shortdoc "Manages Pleroma users" @moduledoc """ @@ -43,7 +44,6 @@ defmodule Mix.Tasks.Pleroma.User do - `--moderator`/`--no-moderator` - whether the user is a moderator - `--admin`/`--no-admin` - whether the user is an admin """ - def run(["new", nickname, email | rest]) do {options, [], []} = OptionParser.parse( @@ -88,7 +88,7 @@ defmodule Mix.Tasks.Pleroma.User do proceed? = Mix.shell().yes?("Continue?") unless not proceed? do - Mix.Task.run("app.start") + Common.start_pleroma() params = %{ @@ -123,7 +123,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["rm", nickname]) do - Mix.Task.run("app.start") + Common.start_pleroma() with %User{local: true} = user <- User.get_by_nickname(nickname) do User.delete(user) @@ -135,7 +135,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["toggle_activated", nickname]) do - Mix.Task.run("app.start") + Common.start_pleroma() with %User{} = user <- User.get_by_nickname(nickname) do User.deactivate(user, !user.info["deactivated"]) @@ -147,7 +147,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["reset_password", nickname]) do - Mix.Task.run("app.start") + Common.start_pleroma() with %User{local: true} = user <- User.get_by_nickname(nickname), {:ok, token} <- Pleroma.PasswordResetToken.create_token(user) do @@ -169,7 +169,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["unsubscribe", nickname]) do - Mix.Task.run("app.start") + Common.start_pleroma() with %User{} = user <- User.get_by_nickname(nickname) do Mix.shell().info("Deactivating #{user.nickname}") @@ -198,7 +198,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["set", nickname | rest]) do - Mix.Task.run("app.start") + Common.start_pleroma() {options, [], []} = OptionParser.parse( @@ -280,7 +280,7 @@ defmodule Mix.Tasks.Pleroma.User do end def run(["invite"]) do - Mix.Task.run("app.start") + Common.start_pleroma() with {:ok, token} <- Pleroma.UserInviteToken.create_token() do Mix.shell().info("Generated user invite token")