Merge branch 'abstract_defaults'

Abstract the defaults into a seperate file
This commit is contained in:
2026-01-03 17:20:18 +01:00
2 changed files with 38 additions and 14 deletions

View File

@@ -7,16 +7,18 @@ from pathlib import Path
import ipaddress import ipaddress
import configparser import configparser
from unisync.defaults import *
@dataclass @dataclass
class ServerConfig: 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: str = "" sshargs: str
hostname: str = "" hostname: str
ip: str = "" ip: str
port: int = 22 port: int
def __post_init__(self): def __post_init__(self):
""" """
@@ -44,15 +46,15 @@ class UnisonConfig:
""" """
Dataclass keeping unison specific configurations Dataclass keeping unison specific configurations
""" """
bools: list = field(default_factory=list) bools: list
values: dict = field(default_factory=dict) values: dict
@dataclass @dataclass
class OtherConfig: class OtherConfig:
""" """
Dataclass keeping miscellanous configuration options Dataclass keeping miscellanous configuration options
""" """
cache_dir_path: Path = Path("~/.unisync").expanduser() cache_dir_path: Path
@dataclass @dataclass
class Config: class Config:
@@ -62,7 +64,7 @@ class Config:
server: ServerConfig server: ServerConfig
roots: RootsConfig roots: RootsConfig
unison: UnisonConfig unison: UnisonConfig
other: OtherConfig = field(default_factory=OtherConfig) other: OtherConfig
def load_config(config_path:str) -> Config: def load_config(config_path:str) -> Config:
@@ -79,18 +81,22 @@ def load_config(config_path:str) -> Config:
# Check if sections are provided # Check if sections are provided
server_section = "Server" if "Server" in config.sections() else UNNAMED_SECTION server_section = "Server" if "Server" in config.sections() else UNNAMED_SECTION
roots_section = "Roots" if "Roots" in config.sections() else UNNAMED_SECTION roots_section = "Roots" if "Roots" in config.sections() else UNNAMED_SECTION
other_section = "Other" if "Other" in config.sections() else UNNAMED_SECTION
server_config = ServerConfig( server_config = ServerConfig(
config.get(server_section, "user"), config.get(server_section, "user"),
config.get(server_section, "sshargs", fallback=""), config.get(server_section, "sshargs", fallback=DEFAULT_SERVER_SSHARGS),
config.get(server_section, "hostname", fallback=""), config.get(server_section, "hostname", fallback=DEFAULT_SERVER_HOSTNAME),
config.get(server_section, "ip", fallback=""), config.get(server_section, "ip", fallback=DEFAULT_SERVER_IP),
config.getint(server_section, "port", fallback=22) config.getint(server_section, "port", fallback=DEFAULT_SERVER_PORT)
) )
roots_config = RootsConfig( roots_config = RootsConfig(
config.get(roots_section, "local"), config.get(roots_section, "local", fallback=DEFAULT_ROOTS_LOCAL),
config.get(roots_section, "remote") config.get(roots_section, "remote")
) )
other_config = OtherConfig(
config.get(other_section, "cache_dir_path", fallback=DEFAULT_MISC_CACHE_DIR_PATH)
)
args_bool = list() args_bool = list()
args_val = dict() args_val = dict()
@@ -104,4 +110,4 @@ def load_config(config_path:str) -> Config:
args_val[key] = val args_val[key] = val
unison_config = UnisonConfig(args_bool, args_val) unison_config = UnisonConfig(args_bool, args_val)
return Config(server_config, roots_config, unison_config) return Config(server_config, roots_config, unison_config, other_config)

18
src/unisync/defaults.py Normal file
View File

@@ -0,0 +1,18 @@
# copyright (c) 2026 paul retourné
# spdx-license-identifier: gpl-3.0-or-later
from pathlib import Path
# Commented out values are part of the config but are required so there is no defaults.
# This allows this file to be a list of all the config options.
# DEFAULT_SERVER_USER: str = ""
DEFAULT_SERVER_SSHARGS: str = ""
DEFAULT_SERVER_HOSTNAME: str = ""
DEFAULT_SERVER_IP: str = ""
DEFAULT_SERVER_PORT: int = 22
DEFAULT_ROOTS_LOCAL: str = str(Path("~/files").expanduser())
# DEFAULT_ROOTS_REMOTE: str = ""
DEFAULT_MISC_CACHE_DIR_PATH: Path = Path("~/.unisync").expanduser()