mirror of
https://github.com/maxdorninger/MediaManager.git
synced 2026-04-17 15:13:24 +02:00
This PR enables the ruff rule for return type annotations (ANN), and adds the ty package for type checking.
49 lines
2.2 KiB
Python
49 lines
2.2 KiB
Python
import shutil
|
|
from logging import Logger
|
|
from pathlib import Path
|
|
|
|
from media_manager.config import MediaManagerConfig
|
|
|
|
|
|
def run_filesystem_checks(config: MediaManagerConfig, log: Logger) -> None:
|
|
log.info("Creating directories if they don't exist...")
|
|
config.misc.tv_directory.mkdir(parents=True, exist_ok=True)
|
|
config.misc.movie_directory.mkdir(parents=True, exist_ok=True)
|
|
config.misc.torrent_directory.mkdir(parents=True, exist_ok=True)
|
|
config.misc.image_directory.mkdir(parents=True, exist_ok=True)
|
|
log.info("Conducting filesystem tests...")
|
|
test_dir = config.misc.tv_directory / Path(".media_manager_test_dir")
|
|
test_dir.mkdir(parents=True, exist_ok=True)
|
|
test_dir.rmdir()
|
|
log.info(f"Successfully created test dir in TV directory at: {test_dir}")
|
|
test_dir = config.misc.movie_directory / Path(".media_manager_test_dir")
|
|
test_dir.mkdir(parents=True, exist_ok=True)
|
|
test_dir.rmdir()
|
|
log.info(f"Successfully created test dir in Movie directory at: {test_dir}")
|
|
test_dir = config.misc.image_directory / Path(".media_manager_test_dir")
|
|
test_dir.touch()
|
|
test_dir.unlink()
|
|
log.info(f"Successfully created test file in Image directory at: {test_dir}")
|
|
test_dir = config.misc.tv_directory / Path(".media_manager_test_dir")
|
|
test_dir.mkdir(parents=True, exist_ok=True)
|
|
torrent_dir = config.misc.torrent_directory / Path(".media_manager_test_dir")
|
|
torrent_dir.mkdir(parents=True, exist_ok=True)
|
|
test_torrent_file = torrent_dir / Path(".media_manager.test.torrent")
|
|
test_torrent_file.touch()
|
|
test_hardlink = test_dir / Path(".media_manager.test.hardlink")
|
|
try:
|
|
test_hardlink.hardlink_to(test_torrent_file)
|
|
if not test_hardlink.samefile(test_torrent_file):
|
|
log.critical("Hardlink creation failed!")
|
|
log.info("Successfully created test hardlink in TV directory")
|
|
except OSError as e:
|
|
log.error(
|
|
f"Hardlink creation failed, falling back to copying files. Error: {e}"
|
|
)
|
|
shutil.copy(src=test_torrent_file, dst=test_hardlink)
|
|
finally:
|
|
test_hardlink.unlink()
|
|
test_torrent_file.unlink()
|
|
torrent_dir.rmdir()
|
|
test_dir.rmdir()
|