From 28de9592014c36100945be8f5219ebb66b3e377b Mon Sep 17 00:00:00 2001 From: Kieran Eglin Date: Sat, 20 Jan 2024 15:34:03 -0800 Subject: [PATCH] Restructured files; Added parser placeholder --- config/config.exs | 2 +- .../downloader/backends/backend_command_runner.ex | 7 +++++++ .../backends}/yt_dlp/command_runner.ex | 4 ++-- .../backends}/yt_dlp/video_collection.ex | 2 +- .../filepath/parser.ex} | 2 +- .../downloader_backends/yt_dlp/command_runner_test.exs | 4 ++-- .../downloader_backends/yt_dlp/video_collection_test.exs | 4 ++-- test/test_helper.exs | 2 +- 8 files changed, 17 insertions(+), 10 deletions(-) create mode 100644 lib/pinchflat/downloader/backends/backend_command_runner.ex rename lib/pinchflat/{downloader_backends => downloader/backends}/yt_dlp/command_runner.ex (93%) rename lib/pinchflat/{downloader_backends => downloader/backends}/yt_dlp/video_collection.ex (89%) rename lib/pinchflat/{downloader_backends/backend_command_runner.ex => downloader/filepath/parser.ex} (74%) diff --git a/config/config.exs b/config/config.exs index f920c3c..fd3d9f1 100644 --- a/config/config.exs +++ b/config/config.exs @@ -12,7 +12,7 @@ config :pinchflat, generators: [timestamp_type: :utc_datetime], # Specifying backend data here makes mocking and local testing SUPER easy yt_dlp_executable: System.find_executable("yt-dlp"), - yt_dlp_runner: Pinchflat.DownloaderBackends.YtDlp.CommandRunner + yt_dlp_runner: Pinchflat.Downloader.Backends.YtDlp.CommandRunner # Configures the endpoint config :pinchflat, PinchflatWeb.Endpoint, diff --git a/lib/pinchflat/downloader/backends/backend_command_runner.ex b/lib/pinchflat/downloader/backends/backend_command_runner.ex new file mode 100644 index 0000000..866008e --- /dev/null +++ b/lib/pinchflat/downloader/backends/backend_command_runner.ex @@ -0,0 +1,7 @@ +defmodule Pinchflat.Downloader.Backends.BackendCommandRunner do + @moduledoc """ + A behaviour for running CLI commands against a downloader backend + """ + + @callback run(binary(), keyword()) :: {:ok, binary()} | {:error, binary(), integer()} +end diff --git a/lib/pinchflat/downloader_backends/yt_dlp/command_runner.ex b/lib/pinchflat/downloader/backends/yt_dlp/command_runner.ex similarity index 93% rename from lib/pinchflat/downloader_backends/yt_dlp/command_runner.ex rename to lib/pinchflat/downloader/backends/yt_dlp/command_runner.ex index 014ae0e..545e094 100644 --- a/lib/pinchflat/downloader_backends/yt_dlp/command_runner.ex +++ b/lib/pinchflat/downloader/backends/yt_dlp/command_runner.ex @@ -1,10 +1,10 @@ -defmodule Pinchflat.DownloaderBackends.YtDlp.CommandRunner do +defmodule Pinchflat.Downloader.Backends.YtDlp.CommandRunner do @moduledoc """ Runs yt-dlp commands using the `System.cmd/3` function """ alias Pinchflat.Utils.StringUtils - alias Pinchflat.DownloaderBackends.BackendCommandRunner + alias Pinchflat.Downloader.Backends.BackendCommandRunner @behaviour BackendCommandRunner diff --git a/lib/pinchflat/downloader_backends/yt_dlp/video_collection.ex b/lib/pinchflat/downloader/backends/yt_dlp/video_collection.ex similarity index 89% rename from lib/pinchflat/downloader_backends/yt_dlp/video_collection.ex rename to lib/pinchflat/downloader/backends/yt_dlp/video_collection.ex index 324895b..ed24bdb 100644 --- a/lib/pinchflat/downloader_backends/yt_dlp/video_collection.ex +++ b/lib/pinchflat/downloader/backends/yt_dlp/video_collection.ex @@ -1,4 +1,4 @@ -defmodule Pinchflat.DownloaderBackends.YtDlp.VideoCollection do +defmodule Pinchflat.Downloader.Backends.YtDlp.VideoCollection do @moduledoc """ Contains utilities for working with collections of videos (ie: channels, playlists) """ diff --git a/lib/pinchflat/downloader_backends/backend_command_runner.ex b/lib/pinchflat/downloader/filepath/parser.ex similarity index 74% rename from lib/pinchflat/downloader_backends/backend_command_runner.ex rename to lib/pinchflat/downloader/filepath/parser.ex index 6e1bcb7..a5bf695 100644 --- a/lib/pinchflat/downloader_backends/backend_command_runner.ex +++ b/lib/pinchflat/downloader/filepath/parser.ex @@ -1,4 +1,4 @@ -defmodule Pinchflat.DownloaderBackends.BackendCommandRunner do +defmodule Pinchflat.Downloader.Filepath.Parser do @moduledoc """ A behaviour for running CLI commands against a downloader backend """ diff --git a/test/pinchflat/downloader_backends/yt_dlp/command_runner_test.exs b/test/pinchflat/downloader_backends/yt_dlp/command_runner_test.exs index 02e18c2..2700090 100644 --- a/test/pinchflat/downloader_backends/yt_dlp/command_runner_test.exs +++ b/test/pinchflat/downloader_backends/yt_dlp/command_runner_test.exs @@ -1,7 +1,7 @@ -defmodule Pinchflat.DownloaderBackends.YtDlp.CommandRunnerTest do +defmodule Pinchflat.Downloader.Backends.YtDlp.CommandRunnerTest do use ExUnit.Case, async: true - alias Pinchflat.DownloaderBackends.YtDlp.CommandRunner, as: Runner + alias Pinchflat.Downloader.Backends.YtDlp.CommandRunner, as: Runner @original_executable Application.compile_env(:pinchflat, :yt_dlp_executable) @video_url "https://www.youtube.com/watch?v=9bZkp7q19f0" diff --git a/test/pinchflat/downloader_backends/yt_dlp/video_collection_test.exs b/test/pinchflat/downloader_backends/yt_dlp/video_collection_test.exs index 08296fc..31cb840 100644 --- a/test/pinchflat/downloader_backends/yt_dlp/video_collection_test.exs +++ b/test/pinchflat/downloader_backends/yt_dlp/video_collection_test.exs @@ -1,8 +1,8 @@ -defmodule Pinchflat.DownloaderBackends.YtDlp.VideoCollectionTest do +defmodule Pinchflat.Downloader.Backends.YtDlp.VideoCollectionTest do use ExUnit.Case, async: true import Mox - alias Pinchflat.DownloaderBackends.YtDlp.VideoCollection, as: VideoCollection + alias Pinchflat.Downloader.Backends.YtDlp.VideoCollection, as: VideoCollection @channel_url "https://www.youtube.com/@TheUselessTrials" diff --git a/test/test_helper.exs b/test/test_helper.exs index 2511d46..3a6890e 100644 --- a/test/test_helper.exs +++ b/test/test_helper.exs @@ -1,4 +1,4 @@ -Mox.defmock(CommandRunnerMock, for: Pinchflat.DownloaderBackends.BackendCommandRunner) +Mox.defmock(CommandRunnerMock, for: Pinchflat.Downloader.Backends.BackendCommandRunner) Application.put_env(:pinchflat, :yt_dlp_runner, CommandRunnerMock) ExUnit.start()