check for config in multiple directories

This commit is contained in:
Izalia Mae 2024-03-02 07:38:48 -05:00
parent 0ad0bb0ff5
commit a271cf22b4
4 changed files with 24 additions and 4 deletions

View file

@ -35,7 +35,7 @@ if typing.TYPE_CHECKING:
class Application(web.Application): class Application(web.Application):
DEFAULT: Application = None DEFAULT: Application = None
def __init__(self, cfgpath: str): def __init__(self, cfgpath: str | None):
web.Application.__init__(self, web.Application.__init__(self,
middlewares = [ middlewares = [
handle_api_path handle_api_path

View file

@ -7,6 +7,7 @@ import typing
import yaml import yaml
from pathlib import Path from pathlib import Path
from platformdirs import user_config_dir
from .misc import IS_DOCKER from .misc import IS_DOCKER
@ -51,7 +52,7 @@ if IS_DOCKER:
class Config: class Config:
def __init__(self, path: str, load: bool = False): def __init__(self, path: str, load: bool = False):
self.path = Path(path).expanduser().resolve() self.path = Config.get_config_dir()
self.listen = None self.listen = None
self.port = None self.port = None
@ -82,6 +83,24 @@ class Config:
self.save() self.save()
@staticmethod
def get_config_dir(path: str | None = None) -> Path:
if path:
return Path(path).expanduser().resolve()
dirs = (
Path("relay.yaml").resolve(),
Path(user_config_dir("activityrelay"), "relay.yaml"),
Path("/etc/activityrelay/relay.yaml")
)
for directory in dirs:
if directory.exists():
return directory
return dirs[0]
@property @property
def sqlite_path(self) -> Path: def sqlite_path(self) -> Path:
if not os.path.isabs(self.sq_path): if not os.path.isabs(self.sq_path):

View file

@ -59,10 +59,10 @@ def check_alphanumeric(text: str) -> str:
@click.group('cli', context_settings={'show_default': True}, invoke_without_command=True) @click.group('cli', context_settings={'show_default': True}, invoke_without_command=True)
@click.option('--config', '-c', default='relay.yaml', help='path to the relay\'s config') @click.option('--config', '-c', help='path to the relay\'s config')
@click.version_option(version=__version__, prog_name='ActivityRelay') @click.version_option(version=__version__, prog_name='ActivityRelay')
@click.pass_context @click.pass_context
def cli(ctx: click.Context, config: str) -> None: def cli(ctx: click.Context, config: str | None) -> None:
ctx.obj = Application(config) ctx.obj = Application(config)
if not ctx.invoked_subcommand: if not ctx.invoked_subcommand:

View file

@ -6,6 +6,7 @@ barkshark-sql@https://git.barkshark.xyz/barkshark/bsql/archive/0.1.1.tar.gz
click>=8.1.2 click>=8.1.2
hamlish-jinja@https://git.barkshark.xyz/barkshark/hamlish-jinja/archive/0.3.5.tar.gz hamlish-jinja@https://git.barkshark.xyz/barkshark/hamlish-jinja/archive/0.3.5.tar.gz
hiredis==2.3.2 hiredis==2.3.2
platformdirs==4.2.0
pyyaml>=6.0 pyyaml>=6.0
redis==5.0.1 redis==5.0.1