Merge branch 'abstract_defaults'
Abstract the defaults into a seperate file
This commit is contained in:
@@ -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
18
src/unisync/defaults.py
Normal 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()
|
||||||
Reference in New Issue
Block a user