summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlex Gleason <alex@alexgleason.me>2021-06-14 17:55:21 -0500
committerAlex Gleason <alex@alexgleason.me>2021-06-14 17:55:21 -0500
commit8527faecf5d8bfac1e277265c46abc88c89ee378 (patch)
tree6091fb25300fbc5d0f00dbcb6b727eca9290f5b1
parent9a768429a3a79faacad47aa19ff2742dacdf245d (diff)
Enable a frontend automatically with `--primary` arg
-rw-r--r--lib/mix/tasks/pleroma/frontend.ex15
-rw-r--r--test/mix/tasks/pleroma/frontend_test.exs27
2 files changed, 38 insertions, 4 deletions
diff --git a/lib/mix/tasks/pleroma/frontend.ex b/lib/mix/tasks/pleroma/frontend.ex
index 819cd9f6a..229ef10bd 100644
--- a/lib/mix/tasks/pleroma/frontend.ex
+++ b/lib/mix/tasks/pleroma/frontend.ex
@@ -28,7 +28,9 @@ defmodule Mix.Tasks.Pleroma.Frontend do
ref: :string,
build_url: :string,
build_dir: :string,
- file: :string
+ file: :string,
+ admin: :boolean,
+ primary: :boolean
]
)
@@ -40,6 +42,10 @@ defmodule Mix.Tasks.Pleroma.Frontend do
|> opts_to_frontend()
|> Frontend.install() do
shell_info("Frontend #{fe.name} installed")
+
+ if get_frontend_type(options) do
+ run(["enable", name] ++ args)
+ end
else
error ->
shell_error("Failed to install frontend")
@@ -63,7 +69,7 @@ defmodule Mix.Tasks.Pleroma.Frontend do
]
)
- frontend_type = get_frontend_type(options)
+ frontend_type = get_frontend_type(options) || :primary
shell_info("Enabling frontend #{name}...")
@@ -92,8 +98,11 @@ defmodule Mix.Tasks.Pleroma.Frontend do
%{admin: true} ->
:admin
- _ ->
+ %{primary: true} ->
:primary
+
+ _ ->
+ nil
end
end
end
diff --git a/test/mix/tasks/pleroma/frontend_test.exs b/test/mix/tasks/pleroma/frontend_test.exs
index db6a8a4dd..3443f8958 100644
--- a/test/mix/tasks/pleroma/frontend_test.exs
+++ b/test/mix/tasks/pleroma/frontend_test.exs
@@ -39,6 +39,28 @@ defmodule Mix.Tasks.Pleroma.FrontendTest do
assert File.exists?(Path.join([@dir, "frontends", "pleroma", "fantasy", "test.txt"]))
end
+ test "it enables a frontend with the --primary flag" do
+ frontend = %Pleroma.Frontend{
+ ref: "fantasy",
+ name: "pleroma",
+ build_url: "http://gensokyo.2hu/builds/${ref}"
+ }
+
+ map = Pleroma.Frontend.to_map(frontend)
+ clear_config(:configurable_from_database, true)
+ clear_config([:frontends, :available], %{"pleroma" => map})
+
+ Tesla.Mock.mock(fn %{url: "http://gensokyo.2hu/builds/fantasy"} ->
+ %Tesla.Env{status: 200, body: File.read!("test/fixtures/tesla_mock/frontend_dist.zip")}
+ end)
+
+ capture_io(fn ->
+ Frontend.run(["install", "pleroma", "--primary"])
+ end)
+
+ assert Pleroma.Config.get([:frontends, :primary]) == map
+ end
+
test "it also works given a file" do
clear_config([:frontends, :available], %{
"pleroma" => %{
@@ -104,7 +126,10 @@ defmodule Mix.Tasks.Pleroma.FrontendTest do
test "raise if configurable_from_database is disabled" do
clear_config(:configurable_from_database, false)
- assert_raise(RuntimeError, fn -> Frontend.run(["enable", "soapbox-fe"]) end)
+
+ assert_raise(RuntimeError, fn ->
+ capture_io(fn -> Frontend.run(["enable", "soapbox-fe"]) end)
+ end)
end
end
end