Renamed FS Helpers module to FS Utils

This commit is contained in:
Kieran Eglin 2024-04-10 18:02:26 -07:00
parent e841f39cf2
commit 0fcdd1df84
19 changed files with 68 additions and 68 deletions

View file

@ -14,7 +14,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do
alias Pinchflat.Repo
alias Pinchflat.Settings
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
def start_link(opts \\ []) do
GenServer.start_link(__MODULE__, %{}, opts)
@ -57,7 +57,7 @@ defmodule Pinchflat.Boot.PreJobStartupTasks do
if !File.exists?(filepath) do
Logger.info("yt-dlp cookie file does not exist - creating it")
FilesystemHelpers.write_p!(filepath, "")
FilesystemUtils.write_p!(filepath, "")
end
end

View file

@ -13,7 +13,7 @@ defmodule Pinchflat.Downloading.MediaDownloader do
alias Pinchflat.Metadata.NfoBuilder
alias Pinchflat.Metadata.MetadataParser
alias Pinchflat.Metadata.MetadataFileHelpers
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Downloading.DownloadOptionBuilder
alias Pinchflat.YtDlp.Media, as: YtDlpMedia
@ -30,7 +30,7 @@ defmodule Pinchflat.Downloading.MediaDownloader do
Returns {:ok, %MediaItem{}} | {:error, any, ...any}
"""
def download_for_media_item(%MediaItem{} = media_item) do
output_filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
output_filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
media_with_preloads = Repo.preload(media_item, [:metadata, source: :media_profile])
case download_with_options(media_item.original_url, media_with_preloads, output_filepath) do

View file

@ -11,7 +11,7 @@ defmodule Pinchflat.Media do
alias Pinchflat.Media.MediaItem
alias Pinchflat.Media.MediaQuery
alias Pinchflat.Metadata.MediaMetadata
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Returns the list of media_items.
@ -223,7 +223,7 @@ defmodule Pinchflat.Media do
end)
|> List.flatten()
|> Enum.filter(&is_binary/1)
|> Enum.each(&FilesystemHelpers.delete_file_and_remove_empty_directories/1)
|> Enum.each(&FilesystemUtils.delete_file_and_remove_empty_directories/1)
{:ok, media_item}
end
@ -235,6 +235,6 @@ defmodule Pinchflat.Media do
MediaMetadata.filepath_attributes()
|> Enum.map(fn field -> mapped_struct[field] end)
|> Enum.filter(&is_binary/1)
|> Enum.each(&FilesystemHelpers.delete_file_and_remove_empty_directories/1)
|> Enum.each(&FilesystemUtils.delete_file_and_remove_empty_directories/1)
end
end

View file

@ -9,7 +9,7 @@ defmodule Pinchflat.Metadata.MetadataFileHelpers do
needed
"""
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Returns the directory where metadata for a database record should be stored.
@ -36,7 +36,7 @@ defmodule Pinchflat.Metadata.MetadataFileHelpers do
filepath = generate_filepath_for(database_record, "metadata.json.gz")
{:ok, json} = Phoenix.json_library().encode(metadata_map)
:ok = FilesystemHelpers.write_p!(filepath, json, [:compressed])
:ok = FilesystemUtils.write_p!(filepath, json, [:compressed])
filepath
end
@ -62,7 +62,7 @@ defmodule Pinchflat.Metadata.MetadataFileHelpers do
filepath = generate_filepath_for(database_record, Path.basename(thumbnail_url))
thumbnail_blob = fetch_thumbnail_from_url(thumbnail_url)
:ok = FilesystemHelpers.write_p!(filepath, thumbnail_blob)
:ok = FilesystemUtils.write_p!(filepath, thumbnail_blob)
filepath
end

View file

@ -7,7 +7,7 @@ defmodule Pinchflat.Metadata.NfoBuilder do
import Pinchflat.Utils.XmlUtils, only: [safe: 1]
alias Pinchflat.Metadata.MetadataFileHelpers
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Builds an NFO file for a media item (read: single "episode") and
@ -18,7 +18,7 @@ defmodule Pinchflat.Metadata.NfoBuilder do
def build_and_store_for_media_item(filepath, metadata) do
nfo = build_for_media_item(metadata)
FilesystemHelpers.write_p!(filepath, nfo)
FilesystemUtils.write_p!(filepath, nfo)
filepath
end
@ -32,7 +32,7 @@ defmodule Pinchflat.Metadata.NfoBuilder do
def build_and_store_for_source(filepath, metadata) do
nfo = build_for_source(metadata)
FilesystemHelpers.write_p!(filepath, nfo)
FilesystemUtils.write_p!(filepath, nfo)
filepath
end

View file

@ -2,7 +2,7 @@ defmodule Pinchflat.Metadata.SourceImageParser do
@moduledoc """
Functions for parsing and storing source images.
"""
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Given a base directory and source metadata, look for the appropriate images
@ -62,7 +62,7 @@ defmodule Pinchflat.Metadata.SourceImageParser do
extension = Path.extname(tmp_filepath)
final_filepath = Path.join([base_directory, "#{filename}#{extension}"])
FilesystemHelpers.cp_p!(tmp_filepath, final_filepath)
FilesystemUtils.cp_p!(tmp_filepath, final_filepath)
{source_attr_name, final_filepath}
end

View file

@ -7,7 +7,7 @@ defmodule Pinchflat.Release do
require Logger
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
def migrate do
load_app()
@ -39,7 +39,7 @@ defmodule Pinchflat.Release do
Logger.info("Checking permissions for #{dir}")
filepath = Path.join([dir, ".keep"])
case FilesystemHelpers.write_p(filepath, "") do
case FilesystemUtils.write_p(filepath, "") do
:ok ->
Logger.info("Permissions OK")

View file

@ -13,7 +13,7 @@ defmodule Pinchflat.Sources do
alias Pinchflat.Profiles.MediaProfile
alias Pinchflat.YtDlp.MediaCollection
alias Pinchflat.Metadata.SourceMetadata
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Downloading.DownloadingHelpers
alias Pinchflat.FastIndexing.FastIndexingWorker
alias Pinchflat.SlowIndexing.SlowIndexingHelpers
@ -153,7 +153,7 @@ defmodule Pinchflat.Sources do
Source.filepath_attributes()
|> Enum.map(fn field -> mapped_struct[field] end)
|> Enum.filter(&is_binary/1)
|> Enum.each(&FilesystemHelpers.delete_file_and_remove_empty_directories/1)
|> Enum.each(&FilesystemUtils.delete_file_and_remove_empty_directories/1)
end
defp delete_internal_metadata_files(source) do
@ -163,7 +163,7 @@ defmodule Pinchflat.Sources do
SourceMetadata.filepath_attributes()
|> Enum.map(fn field -> mapped_struct[field] end)
|> Enum.filter(&is_binary/1)
|> Enum.each(&FilesystemHelpers.delete_file_and_remove_empty_directories/1)
|> Enum.each(&FilesystemUtils.delete_file_and_remove_empty_directories/1)
end
defp add_source_details_to_changeset(source, changeset) do

View file

@ -1,4 +1,4 @@
defmodule Pinchflat.Filesystem.FilesystemHelpers do
defmodule Pinchflat.Utils.FilesystemUtils do
@moduledoc """
Utility methods for working with the filesystem
"""

View file

@ -7,7 +7,7 @@ defmodule Pinchflat.YtDlp.CommandRunner do
alias Pinchflat.Utils.CliUtils
alias Pinchflat.YtDlp.YtDlpCommandRunner
alias Pinchflat.Filesystem.FilesystemHelpers, as: FSUtils
alias Pinchflat.Utils.FilesystemUtils, as: FSUtils
@behaviour YtDlpCommandRunner

View file

@ -6,7 +6,7 @@ defmodule Pinchflat.YtDlp.MediaCollection do
require Logger
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.YtDlp.Media, as: YtDlpMedia
@doc """
@ -26,7 +26,7 @@ defmodule Pinchflat.YtDlp.MediaCollection do
# available formats since we're just getting the media details
command_opts = [:simulate, :skip_download, :ignore_no_formats_error]
output_template = YtDlpMedia.indexing_output_template()
output_filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
output_filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
file_listener_handler = Keyword.get(addl_opts, :file_listener_handler, false)
if file_listener_handler do

View file

@ -6,7 +6,7 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
alias Pinchflat.Media
alias Pinchflat.Sources
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Downloading.MediaDownloadWorker
setup :verify_on_exit!
@ -140,7 +140,7 @@ defmodule Pinchflat.Downloading.MediaDownloadWorkerTest do
test "it saves the file's size to the database", %{media_item: media_item} do
expect(YtDlpRunnerMock, :run, fn _url, _opts, _ot, _addl ->
metadata = render_parsed_metadata(:media_metadata)
FilesystemHelpers.write_p!(metadata["filepath"], "test")
FilesystemUtils.write_p!(metadata["filepath"], "test")
{:ok, Phoenix.json_library().encode!(metadata)}
end)

View file

@ -2,10 +2,10 @@ defmodule Pinchflat.Metadata.NfoBuilderTest do
use Pinchflat.DataCase
alias Pinchflat.Metadata.NfoBuilder
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
setup do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
on_exit(fn -> File.rm!(filepath) end)

View file

@ -1,12 +1,12 @@
defmodule Pinchflat.SlowIndexing.FileFollowerServerTest do
use ExUnit.Case, async: true
alias alias Pinchflat.Filesystem.FilesystemHelpers
alias alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.SlowIndexing.FileFollowerServer
setup do
{:ok, pid} = FileFollowerServer.start_link()
tmpfile = FilesystemHelpers.generate_metadata_tmpfile(:txt)
tmpfile = FilesystemUtils.generate_metadata_tmpfile(:txt)
{:ok, %{pid: pid, tmpfile: tmpfile}}
end

View file

@ -8,7 +8,7 @@ defmodule Pinchflat.SourcesTest do
alias Pinchflat.Sources
alias Pinchflat.Sources.Source
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.Metadata.MetadataFileHelpers
alias Pinchflat.Downloading.DownloadingHelpers
alias Pinchflat.FastIndexing.FastIndexingWorker
@ -561,7 +561,7 @@ defmodule Pinchflat.SourcesTest do
end
test "does not delete the source's non-metadata files" do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:nfo)
filepath = FilesystemUtils.generate_metadata_tmpfile(:nfo)
source = source_fixture(%{nfo_filepath: filepath})
assert {:ok, _} = Sources.delete_source(source)
@ -592,7 +592,7 @@ defmodule Pinchflat.SourcesTest do
end
test "deletes the source's non-metadata files" do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:nfo)
filepath = FilesystemUtils.generate_metadata_tmpfile(:nfo)
source = source_fixture(%{nfo_filepath: filepath})
assert {:ok, _} = Sources.delete_source(source, delete_files: true)

View file

@ -1,13 +1,13 @@
defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
defmodule Pinchflat.Utils.FilesystemUtilsTest do
use Pinchflat.DataCase
import Pinchflat.MediaFixtures
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
describe "generate_metadata_tmpfile/1" do
test "creates a tmpfile and returns its path" do
res = FilesystemHelpers.generate_metadata_tmpfile(:json)
res = FilesystemUtils.generate_metadata_tmpfile(:json)
assert String.ends_with?(res, ".json")
assert File.exists?(res)
@ -22,7 +22,7 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
refute media_item.media_size_bytes
assert {:ok, media_item} = FilesystemHelpers.compute_and_save_media_filesize(media_item)
assert {:ok, media_item} = FilesystemUtils.compute_and_save_media_filesize(media_item)
assert Repo.reload!(media_item).media_size_bytes
end
@ -30,16 +30,16 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
test "returns the error if operation fails" do
media_item = media_item_fixture(%{media_filepath: "/nonexistent/file.mkv"})
assert {:error, _} = FilesystemHelpers.compute_and_save_media_filesize(media_item)
assert {:error, _} = FilesystemUtils.compute_and_save_media_filesize(media_item)
end
end
describe "write_p/3" do
test "writes content to a file" do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
content = "{}"
assert :ok = FilesystemHelpers.write_p(filepath, content)
assert :ok = FilesystemUtils.write_p(filepath, content)
assert File.read!(filepath) == content
File.rm!(filepath)
@ -50,7 +50,7 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
filepath = Path.join([tmpfile_directory, "foo", "bar", "file.json"])
content = "{}"
assert :ok = FilesystemHelpers.write_p(filepath, content)
assert :ok = FilesystemUtils.write_p(filepath, content)
assert File.read!(filepath) == content
File.rm!(filepath)
@ -59,10 +59,10 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
describe "write_p!/3" do
test "writes content to a file" do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
content = "{}"
assert :ok = FilesystemHelpers.write_p!(filepath, content)
assert :ok = FilesystemUtils.write_p!(filepath, content)
assert File.read!(filepath) == content
File.rm!(filepath)
@ -73,7 +73,7 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
filepath = Path.join([tmpfile_directory, "foo", "bar", "file.json"])
content = "{}"
assert :ok = FilesystemHelpers.write_p!(filepath, content)
assert :ok = FilesystemUtils.write_p!(filepath, content)
assert File.read!(filepath) == content
File.rm!(filepath)
@ -82,11 +82,11 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
describe "delete_file_and_remove_empty_directories/1" do
test "deletes file at the provided filepath" do
filepath = FilesystemHelpers.generate_metadata_tmpfile(:json)
filepath = FilesystemUtils.generate_metadata_tmpfile(:json)
assert File.exists?(filepath)
assert :ok = FilesystemHelpers.delete_file_and_remove_empty_directories(filepath)
assert :ok = FilesystemUtils.delete_file_and_remove_empty_directories(filepath)
refute File.exists?(filepath)
end
@ -94,9 +94,9 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
test "deletes empty directories" do
tmpfile_directory = Application.get_env(:pinchflat, :tmpfile_directory)
filepath = Path.join([tmpfile_directory, "foo", "bar", "baz", "qux.json"])
FilesystemHelpers.write_p!(filepath, "")
FilesystemUtils.write_p!(filepath, "")
assert :ok = FilesystemHelpers.delete_file_and_remove_empty_directories(filepath)
assert :ok = FilesystemUtils.delete_file_and_remove_empty_directories(filepath)
refute File.exists?(filepath)
refute File.exists?(Path.join([tmpfile_directory, "foo", "bar", "baz"]))
@ -108,10 +108,10 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
tmpfile_directory = Application.get_env(:pinchflat, :tmpfile_directory)
filepath_1 = Path.join([tmpfile_directory, "foo", "bar", "baz", "qux.json"])
filepath_2 = Path.join([tmpfile_directory, "foo", "baz.json"])
FilesystemHelpers.write_p!(filepath_1, "")
FilesystemHelpers.write_p!(filepath_2, "")
FilesystemUtils.write_p!(filepath_1, "")
FilesystemUtils.write_p!(filepath_2, "")
assert :ok = FilesystemHelpers.delete_file_and_remove_empty_directories(filepath_1)
assert :ok = FilesystemUtils.delete_file_and_remove_empty_directories(filepath_1)
refute File.exists?(filepath_1)
refute File.exists?(Path.join([tmpfile_directory, "foo", "bar", "baz"]))
@ -121,24 +121,24 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
assert File.exists?(Path.join([tmpfile_directory, "foo"]))
# cleanup
FilesystemHelpers.delete_file_and_remove_empty_directories(filepath_2)
FilesystemUtils.delete_file_and_remove_empty_directories(filepath_2)
end
test "returns an error if file could not be deleted" do
filepath = "/nonexistent/file.json"
assert {:error, _} = FilesystemHelpers.delete_file_and_remove_empty_directories(filepath)
assert {:error, _} = FilesystemUtils.delete_file_and_remove_empty_directories(filepath)
end
end
describe "cp_p!/2" do
test "copies a file from source to destination" do
source = "#{tmpfile_directory()}/source.json"
FilesystemHelpers.write_p!(source, "TEST")
FilesystemUtils.write_p!(source, "TEST")
destination = "#{tmpfile_directory()}/destination.json"
refute File.exists?(destination)
FilesystemHelpers.cp_p!(source, destination)
FilesystemUtils.cp_p!(source, destination)
assert File.exists?(destination)
assert File.read!(destination) == "TEST"
@ -148,11 +148,11 @@ defmodule Pinchflat.Filesystem.FilesystemHelpersTest do
test "creates directories as needed" do
source = "#{tmpfile_directory()}/source.json"
FilesystemHelpers.write_p!(source, "TEST")
FilesystemUtils.write_p!(source, "TEST")
destination = "#{tmpfile_directory()}/foo/bar/destination.json"
refute File.exists?(destination)
FilesystemHelpers.cp_p!(source, destination)
FilesystemUtils.cp_p!(source, destination)
assert File.exists?(destination)
File.rm!(source)

View file

@ -1,7 +1,7 @@
defmodule Pinchflat.YtDlp.CommandRunnerTest do
use ExUnit.Case, async: true
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
alias Pinchflat.YtDlp.CommandRunner, as: Runner
@ -51,7 +51,7 @@ defmodule Pinchflat.YtDlp.CommandRunnerTest do
end
test "includes cookie options when cookies.txt exists", %{cookie_file: cookie_file} do
FilesystemHelpers.write_p!(cookie_file, "cookie data")
FilesystemUtils.write_p!(cookie_file, "cookie data")
assert {:ok, output} = Runner.run(@media_url, [], "")
@ -59,7 +59,7 @@ defmodule Pinchflat.YtDlp.CommandRunnerTest do
end
test "doesn't include cookie options when cookies.txt blank", %{cookie_file: cookie_file} do
FilesystemHelpers.write_p!(cookie_file, " \n \n ")
FilesystemUtils.write_p!(cookie_file, " \n \n ")
assert {:ok, output} = Runner.run(@media_url, [], "")

View file

@ -5,7 +5,7 @@ defmodule Pinchflat.MediaFixtures do
"""
alias Pinchflat.SourcesFixtures
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Generate a media_item.
@ -52,8 +52,8 @@ defmodule Pinchflat.MediaFixtures do
json_gz_filepath = Path.join(metadata_dir, "metadata.json.gz")
thumbnail_filepath = Path.join(metadata_dir, "thumbnail.jpg")
FilesystemHelpers.cp_p!(media_metadata_filepath_fixture(), json_gz_filepath)
FilesystemHelpers.cp_p!(thumbnail_filepath_fixture(), thumbnail_filepath)
FilesystemUtils.cp_p!(media_metadata_filepath_fixture(), json_gz_filepath)
FilesystemUtils.cp_p!(thumbnail_filepath_fixture(), thumbnail_filepath)
merged_attrs =
Map.merge(attrs, %{
@ -74,7 +74,7 @@ defmodule Pinchflat.MediaFixtures do
"#{:rand.uniform(1_000_000)}_media.mp4"
])
FilesystemHelpers.cp_p!(media_filepath_fixture(), stored_media_filepath)
FilesystemUtils.cp_p!(media_filepath_fixture(), stored_media_filepath)
merged_attrs = Map.merge(attrs, %{media_filepath: stored_media_filepath})
media_item_fixture(merged_attrs)

View file

@ -8,7 +8,7 @@ defmodule Pinchflat.SourcesFixtures do
alias Pinchflat.MediaFixtures
alias Pinchflat.Sources.Source
alias Pinchflat.ProfilesFixtures
alias Pinchflat.Filesystem.FilesystemHelpers
alias Pinchflat.Utils.FilesystemUtils
@doc """
Generate a source.
@ -59,9 +59,9 @@ defmodule Pinchflat.SourcesFixtures do
poster_filepath = Path.join(metadata_dir, "poster.jpg")
fanart_filepath = Path.join(metadata_dir, "fanart.jpg")
FilesystemHelpers.cp_p!(MediaFixtures.media_metadata_filepath_fixture(), json_gz_filepath)
FilesystemHelpers.cp_p!(MediaFixtures.thumbnail_filepath_fixture(), poster_filepath)
FilesystemHelpers.cp_p!(MediaFixtures.thumbnail_filepath_fixture(), fanart_filepath)
FilesystemUtils.cp_p!(MediaFixtures.media_metadata_filepath_fixture(), json_gz_filepath)
FilesystemUtils.cp_p!(MediaFixtures.thumbnail_filepath_fixture(), poster_filepath)
FilesystemUtils.cp_p!(MediaFixtures.thumbnail_filepath_fixture(), fanart_filepath)
merged_attrs =
Map.merge(attrs, %{