Support a TOML configuration file
The new config file currently only configures the same options that were already available through environment variables. However I have ideas for additional features that would be much nicer to support using a structured configuration format like TOML rather than environment variables, so config files exist now! The previous environment variables are still supported and will be used if you don't have a config file. I plan to keep supporting the MPD_HOST and MPD_PORT environment variables forever since they're shared with other MPD clients such as mpc, but I may eventually drop the environment variables specific to mpd-now-playable in a future release.
This commit is contained in:
parent
796e3df87d
commit
dc037a0a4b
12 changed files with 305 additions and 33 deletions
26
src/mpd_now_playable/config/model.py
Normal file
26
src/mpd_now_playable/config/model.py
Normal file
|
@ -0,0 +1,26 @@
|
|||
from dataclasses import dataclass, field
|
||||
from typing import Optional
|
||||
|
||||
from apischema import alias
|
||||
from yarl import URL
|
||||
|
||||
from .fields import Host, Port, optional
|
||||
|
||||
__all__ = ("MpdConfig", "Config")
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class MpdConfig:
|
||||
password: Optional[str] = optional()
|
||||
host: Host = Host("127.0.0.1")
|
||||
port: Port = Port(6600)
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Config:
|
||||
schema: URL = field(
|
||||
default=URL("https://cdn.00dani.me/m/schemata/mpd-now-playable/config-v1.json"),
|
||||
metadata=alias("$schema"),
|
||||
)
|
||||
cache: Optional[URL] = optional()
|
||||
mpd: MpdConfig = field(default_factory=MpdConfig)
|
Loading…
Add table
Add a link
Reference in a new issue