aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
Diffstat (limited to 'lib')
-rw-r--r--lib/mix/pleroma.ex20
-rw-r--r--lib/mix/tasks/pleroma/digest.ex2
-rw-r--r--lib/mix/tasks/pleroma/email.ex1
-rw-r--r--lib/mix/tasks/pleroma/relay.ex3
-rw-r--r--lib/pleroma/application.ex3
5 files changed, 27 insertions, 2 deletions
diff --git a/lib/mix/pleroma.ex b/lib/mix/pleroma.ex
index 3ad6edbfb..553c74c25 100644
--- a/lib/mix/pleroma.ex
+++ b/lib/mix/pleroma.ex
@@ -3,6 +3,8 @@
# SPDX-License-Identifier: AGPL-3.0-only
defmodule Mix.Pleroma do
+ @apps [:restarter, :ecto, :ecto_sql, :postgrex, :db_connection, :cachex]
+ @cachex_childs ["object", "user"]
@doc "Common functions to be reused in mix tasks"
def start_pleroma do
Application.put_env(:phoenix, :serve_endpoints, false, persistent: true)
@@ -11,7 +13,23 @@ defmodule Mix.Pleroma do
Application.put_env(:logger, :console, level: :debug)
end
- {:ok, _} = Application.ensure_all_started(:pleroma)
+ apps =
+ if Application.get_env(:tesla, :adapter) == Tesla.Adapter.Gun do
+ [:gun | @apps]
+ else
+ [:hackney | @apps]
+ end
+
+ Enum.each(apps, &Application.ensure_all_started/1)
+
+ childs = [Pleroma.Repo, Pleroma.Config.TransferTask, Pleroma.Web.Endpoint]
+
+ cachex_childs = Enum.map(@cachex_childs, &Pleroma.Application.build_cachex(&1, []))
+
+ Supervisor.start_link(childs ++ cachex_childs,
+ strategy: :one_for_one,
+ name: Pleroma.Supervisor
+ )
if Pleroma.Config.get(:env) not in [:test, :benchmark] do
pleroma_rebooted?()
diff --git a/lib/mix/tasks/pleroma/digest.ex b/lib/mix/tasks/pleroma/digest.ex
index 3595f912d..8bde2d4f2 100644
--- a/lib/mix/tasks/pleroma/digest.ex
+++ b/lib/mix/tasks/pleroma/digest.ex
@@ -7,6 +7,8 @@ defmodule Mix.Tasks.Pleroma.Digest do
def run(["test", nickname | opts]) do
Mix.Pleroma.start_pleroma()
+ Application.ensure_all_started(:timex)
+ Application.ensure_all_started(:swoosh)
user = Pleroma.User.get_by_nickname(nickname)
diff --git a/lib/mix/tasks/pleroma/email.ex b/lib/mix/tasks/pleroma/email.ex
index d3fac6ec8..16fe31431 100644
--- a/lib/mix/tasks/pleroma/email.ex
+++ b/lib/mix/tasks/pleroma/email.ex
@@ -7,6 +7,7 @@ defmodule Mix.Tasks.Pleroma.Email do
def run(["test" | args]) do
Mix.Pleroma.start_pleroma()
+ Application.ensure_all_started(:swoosh)
{options, [], []} =
OptionParser.parse(
diff --git a/lib/mix/tasks/pleroma/relay.ex b/lib/mix/tasks/pleroma/relay.ex
index c3312507e..b67d256c3 100644
--- a/lib/mix/tasks/pleroma/relay.ex
+++ b/lib/mix/tasks/pleroma/relay.ex
@@ -12,6 +12,7 @@ defmodule Mix.Tasks.Pleroma.Relay do
def run(["follow", target]) do
start_pleroma()
+ Application.ensure_all_started(:flake_id)
with {:ok, _activity} <- Relay.follow(target) do
# put this task to sleep to allow the genserver to push out the messages
@@ -23,6 +24,7 @@ defmodule Mix.Tasks.Pleroma.Relay do
def run(["unfollow", target]) do
start_pleroma()
+ Application.ensure_all_started(:flake_id)
with {:ok, _activity} <- Relay.unfollow(target) do
# put this task to sleep to allow the genserver to push out the messages
@@ -34,6 +36,7 @@ defmodule Mix.Tasks.Pleroma.Relay do
def run(["list"]) do
start_pleroma()
+ Application.ensure_all_started(:flake_id)
with {:ok, list} <- Relay.list(true) do
list |> Enum.each(&shell_info(&1))
diff --git a/lib/pleroma/application.ex b/lib/pleroma/application.ex
index 9615af122..7eb629abf 100644
--- a/lib/pleroma/application.ex
+++ b/lib/pleroma/application.ex
@@ -162,7 +162,8 @@ defmodule Pleroma.Application do
defp seconds_valid_interval,
do: :timer.seconds(Config.get!([Pleroma.Captcha, :seconds_valid]))
- defp build_cachex(type, opts),
+ @spec build_cachex(String.t(), keyword()) :: map()
+ def build_cachex(type, opts),
do: %{
id: String.to_atom("cachex_" <> type),
start: {Cachex, :start_link, [String.to_atom(type <> "_cache"), opts]},