From e98fe97f1f1b73f831a23df52c434b6c5bf54719 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Fri, 8 Nov 2024 12:29:50 -0800 Subject: [PATCH 1/3] Added new script type to pre-job startup tasks --- lib/pinchflat/boot/pre_job_startup_tasks.ex | 10 ++++++++++ lib/pinchflat/lifecycle/user_scripts/command_runner.ex | 1 + 2 files changed, 11 insertions(+) diff --git a/lib/pinchflat/boot/pre_job_startup_tasks.ex b/lib/pinchflat/boot/pre_job_startup_tasks.ex index 85fb399b..725fc157 100644 --- a/lib/pinchflat/boot/pre_job_startup_tasks.ex +++ b/lib/pinchflat/boot/pre_job_startup_tasks.ex @@ -16,6 +16,8 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do alias Pinchflat.Settings alias Pinchflat.Utils.FilesystemUtils + alias Pinchflat.Lifecycle.UserScripts.CommandRunner, as: UserScriptRunner + def start_link(opts \\ []) do GenServer.start_link(__MODULE__, %{}, opts) end @@ -36,6 +38,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do create_blank_yt_dlp_files() create_blank_user_script_file() apply_default_settings() + run_app_init_script() {:ok, state} end @@ -95,6 +98,13 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do Settings.set(apprise_version: apprise_version) end + # TODO: test + defp run_app_init_script do + runner = Application.get_env(:pinchflat, :user_script_runner, UserScriptRunner) + + runner.run(:app_init, %{}) + end + defp yt_dlp_runner do Application.get_env(:pinchflat, :yt_dlp_runner) end diff --git a/lib/pinchflat/lifecycle/user_scripts/command_runner.ex b/lib/pinchflat/lifecycle/user_scripts/command_runner.ex index 54aa38c4..9a77ea58 100644 --- a/lib/pinchflat/lifecycle/user_scripts/command_runner.ex +++ b/lib/pinchflat/lifecycle/user_scripts/command_runner.ex @@ -12,6 +12,7 @@ defmodule Pinchflat.Lifecycle.UserScripts.CommandRunner do @behaviour UserScriptCommandRunner @event_types [ + :app_init, :media_pre_download, :media_downloaded, :media_deleted From e77e530f6570b813b0063e78b61b6dc7423f6bb1 Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Fri, 8 Nov 2024 12:48:47 -0800 Subject: [PATCH 2/3] Updated Dockerfile to create the needful directories --- docker/selfhosted.Dockerfile | 4 +++- lib/pinchflat/release.ex | 2 ++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docker/selfhosted.Dockerfile b/docker/selfhosted.Dockerfile index e3c6a21c..235206a7 100644 --- a/docker/selfhosted.Dockerfile +++ b/docker/selfhosted.Dockerfile @@ -88,6 +88,7 @@ RUN apt-get update -y && \ ca-certificates \ python3-mutagen \ curl \ + zip \ openssh-client \ nano \ python3 \ @@ -116,7 +117,8 @@ ENV LC_ALL en_US.UTF-8 WORKDIR "/app" # Set up data volumes -RUN mkdir /config /downloads /etc/elixir_tzdata_data && chmod ugo+rw /etc/elixir_tzdata_data +RUN mkdir -p /config /downloads /etc/elixir_tzdata_data /etc/yt-dlp/plugins && \ + chmod ugo+rw /etc/elixir_tzdata_data /etc/yt-dlp /etc/yt-dlp/plugins # set runner ENV ENV MIX_ENV="prod" diff --git a/lib/pinchflat/release.ex b/lib/pinchflat/release.ex index 4547c0a9..c6060c3e 100644 --- a/lib/pinchflat/release.ex +++ b/lib/pinchflat/release.ex @@ -29,6 +29,8 @@ defmodule Pinchflat.Release do [ "/config", "/downloads", + "/etc/yt-dlp", + "/etc/yt-dlp/plugins", Application.get_env(:pinchflat, :media_directory), Application.get_env(:pinchflat, :tmpfile_directory), Application.get_env(:pinchflat, :extras_directory), From 8922bd84a2bcf4f28b55f907e4e6077cb96b1d2a Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Fri, 8 Nov 2024 14:35:35 -0800 Subject: [PATCH 3/3] added tests --- lib/pinchflat/boot/pre_job_startup_tasks.ex | 1 - test/pinchflat/boot/pre_job_startup_tasks_test.exs | 13 +++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/lib/pinchflat/boot/pre_job_startup_tasks.ex b/lib/pinchflat/boot/pre_job_startup_tasks.ex index 725fc157..2843db90 100644 --- a/lib/pinchflat/boot/pre_job_startup_tasks.ex +++ b/lib/pinchflat/boot/pre_job_startup_tasks.ex @@ -98,7 +98,6 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do Settings.set(apprise_version: apprise_version) end - # TODO: test defp run_app_init_script do runner = Application.get_env(:pinchflat, :user_script_runner, UserScriptRunner) diff --git a/test/pinchflat/boot/pre_job_startup_tasks_test.exs b/test/pinchflat/boot/pre_job_startup_tasks_test.exs index a940a4dd..ceea6d44 100644 --- a/test/pinchflat/boot/pre_job_startup_tasks_test.exs +++ b/test/pinchflat/boot/pre_job_startup_tasks_test.exs @@ -9,6 +9,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasksTest do setup do stub(YtDlpRunnerMock, :version, fn -> {:ok, "1"} end) stub(AppriseRunnerMock, :version, fn -> {:ok, "2"} end) + stub(UserScriptRunnerMock, :run, fn _event_type, _data -> {:ok, "3", 0} end) :ok end @@ -112,4 +113,16 @@ defmodule Pinchflat.Boot.PreJobStartupTasksTest do assert Settings.get!(:apprise_version) end end + + describe "run_app_init_script" do + test "calls the app_init user script runner" do + expect(UserScriptRunnerMock, :run, fn :app_init, data -> + assert data == %{} + + {:ok, "", 0} + end) + + PreJobStartupTasks.init(%{}) + end + end end