Move set_admin task to lib/mix/tasks/pleroma/user.ex
authorrinpatch <rinpatch@sdf.org>
Sat, 1 Dec 2018 15:55:52 +0000 (18:55 +0300)
committerrinpatch <rinpatch@sdf.org>
Sat, 1 Dec 2018 15:55:52 +0000 (18:55 +0300)
lib/mix/tasks/pleroma/user.ex
lib/mix/tasks/set_admin.ex [deleted file]

index c7c69ed012ca86c7fbd39619c83e0639c7631b37..9aa569b2ae7d356156d05ec0728785bf4aaa227c 100644 (file)
@@ -15,6 +15,7 @@ defmodule Mix.Tasks.Pleroma.User do
   - `--bio BIO` - the user's bio
   - `--password PASSWORD` - the user's password
   - `--moderator`/`--no-moderator` - whether the user is a moderator
+  - `--admin`/`--no-admin` - whether the user is an admin
 
   ## Delete the user's account.
 
@@ -35,6 +36,7 @@ defmodule Mix.Tasks.Pleroma.User do
   Options:
   - `--locked`/`--no-locked` - whether the user's account is locked
   - `--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
@@ -154,6 +156,7 @@ defmodule Mix.Tasks.Pleroma.User do
         rest,
         strict: [
           moderator: :boolean,
+          admin: :boolean,
           locked: :boolean
         ]
       )
@@ -167,6 +170,11 @@ defmodule Mix.Tasks.Pleroma.User do
       nil -> nil
       value -> set_locked(nickname, value)
     end
+
+    case Keyword.get(options, :admin) do
+      nil -> nil
+      value -> set_admin(nickname, value)
+    end
   end
 
   defp set_moderator(nickname, value) do
@@ -187,6 +195,24 @@ defmodule Mix.Tasks.Pleroma.User do
     end
   end
 
+  defp set_admin(nickname, value) do
+    Application.ensure_all_started(:pleroma)
+
+    with %User{local: true} = user <- User.get_by_nickname(nickname) do
+      info =
+        user.info
+        |> Map.put("is_admin", value)
+
+      cng = User.info_changeset(user, %{info: info})
+      {:ok, user} = User.update_and_set_cache(cng)
+
+      Mix.shell().info("Admin status of #{nickname}: #{user.info["is_admin"]}")
+    else
+      _ ->
+        Mix.shell().error("No local user #{nickname}")
+    end
+  end
+
   defp set_locked(nickname, value) do
     Mix.Ecto.ensure_started(Repo, [])
 
diff --git a/lib/mix/tasks/set_admin.ex b/lib/mix/tasks/set_admin.ex
deleted file mode 100644 (file)
index d5ccf26..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-defmodule Mix.Tasks.SetAdmin do
-  use Mix.Task
-  alias Pleroma.User
-
-  @doc """
-  Sets admin status
-  Usage: set_admin nickname [true|false]
-  """
-  def run([nickname | rest]) do
-    Application.ensure_all_started(:pleroma)
-
-    status =
-      case rest do
-        [status] -> status == "true"
-        _ -> true
-      end
-
-    with %User{local: true} = user <- User.get_by_nickname(nickname) do
-      info =
-        user.info
-        |> Map.put("is_admin", !!status)
-
-      cng = User.info_changeset(user, %{info: info})
-      {:ok, user} = User.update_and_set_cache(cng)
-
-      IO.puts("Admin status of #{nickname}: #{user.info["is_admin"]}")
-    else
-      _ ->
-        IO.puts("No local user #{nickname}")
-    end
-  end
-end