Bug fixes and small improvements

Fix :
- paths : true instead of True
- paths : Path has no len convert to str first to get the number of
  characters

Improvements :
- Replace all PosixPath by Path
This commit is contained in:
2026-01-01 17:24:46 +01:00
parent 48179034a7
commit 27924013d9
3 changed files with 16 additions and 15 deletions

View File

@@ -3,7 +3,7 @@
from configparser import UNNAMED_SECTION from configparser import UNNAMED_SECTION
from dataclasses import dataclass, field from dataclasses import dataclass, field
from pathlib import Path, PosixPath from pathlib import Path
import ipaddress import ipaddress
import configparser import configparser
@@ -13,10 +13,10 @@ class ServerConfig:
Dataclass keeping the config for connecting to the server Dataclass keeping the config for connecting to the server
""" """
user: str user: str
sshargs: list[str] | None = field(default_factory=list) sshargs: str = ""
hostname: str = "" hostname: str = ""
ip: str = "" ip: str = ""
port: int = 22 port: int | None = 22
def __post_init__(self): def __post_init__(self):
""" """
@@ -52,7 +52,7 @@ class OtherConfig:
""" """
Dataclass keeping miscellanous configuration options Dataclass keeping miscellanous configuration options
""" """
cache_dir_path: PosixPath = Path("~/.unisync").expanduser() cache_dir_path: Path = Path("~/.unisync").expanduser()
@dataclass @dataclass
class Config: class Config:
@@ -82,9 +82,9 @@ def load_config(config_path:str) -> Config:
server_config = ServerConfig( server_config = ServerConfig(
config.get(server_section, "user"), config.get(server_section, "user"),
config.get(server_section, "sshargs", fallback=None), config.get(server_section, "sshargs", fallback=""),
config.get(server_section, "hostname", fallback=None), config.get(server_section, "hostname", fallback=""),
config.get(server_section, "ip", fallback=None), config.get(server_section, "ip", fallback=""),
config.getint(server_section, "port", fallback=None) config.getint(server_section, "port", fallback=None)
) )
roots_config = RootsConfig( roots_config = RootsConfig(

View File

@@ -4,12 +4,13 @@
import os.path import os.path
import subprocess import subprocess
import sys
from pathlib import Path, PosixPath from pathlib import Path
class PathsManager: class PathsManager:
def __init__(self, local_dir:PosixPath, cache_dir:PosixPath): def __init__(self, local_dir:Path, cache_dir:Path):
""" """
Creates a PathsManager with the necessary data Creates a PathsManager with the necessary data
Args: Args:
@@ -24,7 +25,7 @@ class PathsManager:
raise ValueError("Invalid cache directory") raise ValueError("Invalid cache directory")
self.cache_dir = cache_dir self.cache_dir = cache_dir
self.paths_file:PosixPath = self.cache_dir / "paths" self.paths_file:Path = self.cache_dir / "paths"
if not self.paths_file.is_file(): if not self.paths_file.is_file():
raise ValueError("The paths file does not exist") raise ValueError("The paths file does not exist")
@@ -48,7 +49,7 @@ class PathsManager:
"-p", "-", "-p", "-",
self.local_dir self.local_dir
] ]
nnn_process = subprocess.Popen(command, stdout=subprocess.PIPE) nnn_process:subprocess.Popen = subprocess.Popen(command, stdout=subprocess.PIPE)
try: try:
ret_code = nnn_process.wait(timeout=choice_timeout) ret_code = nnn_process.wait(timeout=choice_timeout)
except subprocess.TimeoutExpired as e: except subprocess.TimeoutExpired as e:
@@ -57,18 +58,18 @@ class PathsManager:
if ret_code != 0: if ret_code != 0:
print("File selection failed", file=sys.stderr) print("File selection failed", file=sys.stderr)
raise subprocess.CalledProcessError("File selection failed") raise subprocess.CalledProcessError(1, "File selection failed")
paths_list:list[str] = [] paths_list:list[str] = []
while (next_path := nnn_process.stdout.readline()) != b'': while (next_path := nnn_process.stdout.readline()) != b'':
next_path = next_path.decode().strip() next_path = next_path.decode().strip()
# Make the path relative to the top directory # Make the path relative to the top directory
next_path = next_path[len(self.local_dir):].lstrip("/") next_path = next_path[len(str(self.local_dir)):].lstrip("/")
paths_list.append(next_path) paths_list.append(next_path)
return paths_list return paths_list
def add_files_to_sync(self): def add_files_to_sync(self):
while true: while True:
try: try:
paths = self.user_select_files() paths = self.user_select_files()
break break

View File

@@ -182,7 +182,7 @@ class Synchroniser:
- subprocess.CalledProcessError: An error occured with sshfs - subprocess.CalledProcessError: An error occured with sshfs
""" """
# Get the absolute path to the correct .data directory resolving symlinks # Get the absolute path to the correct .data directory resolving symlinks
path_to_mount:PosixPath = Path(f"{self.local}/../.data").resolve() path_to_mount:Path = Path(f"{self.local}/../.data").resolve()
if path_to_mount.is_mount(): if path_to_mount.is_mount():
raise RemoteMountedError raise RemoteMountedError
# Check if it is an empty directory # Check if it is an empty directory