remove appdirs dep and add option to set sqlite database path

This commit is contained in:
Izalia Mae 2022-12-20 06:01:20 -05:00
parent e3c4377db6
commit 04ae6a8851
3 changed files with 37 additions and 16 deletions

View file

@ -1,9 +1,9 @@
general: general:
# Address the relay will listen on. Set to "0.0.0.0" for any address # Address the relay will listen on. Set to "0.0.0.0" for any address
listen: 0.0.0.0 listen: 0.0.0.0
# Port the relay will listen on # TCP port the relay will listen on
port: 3621 port: 3621
# Domain the relay will advertise as # Domain the relay will advertise itself as
host: relay.example.com host: relay.example.com
database: database:
@ -14,6 +14,9 @@ database:
# Maximum number of database connections to open # Maximum number of database connections to open
max_connections: 10 max_connections: 10
sqlite:
database: relay.sqlite3
postgres: postgres:
database: activityrelay database: activityrelay
hostname: null hostname: null

View file

@ -1,10 +1,10 @@
import appdirs
import os import os
import sys import sys
import yaml import yaml
from functools import cached_property from functools import cached_property
from pathlib import Path from pathlib import Path
from platform import system
from .misc import AppBase, DotDict from .misc import AppBase, DotDict
@ -16,6 +16,7 @@ DEFAULTS = {
'database_type': 'sqlite', 'database_type': 'sqlite',
'database_min_connections': 0, 'database_min_connections': 0,
'database_max_connections': 10, 'database_max_connections': 10,
'sqlite_database': Path('relay.sqlite3'),
'postgres_database': 'activityrelay', 'postgres_database': 'activityrelay',
'postgres_hostname': None, 'postgres_hostname': None,
'postgres_port': None, 'postgres_port': None,
@ -35,26 +36,35 @@ CATEGORY_NAMES = [
'mysql' 'mysql'
] ]
CONFIG_DIRS = [
Path.cwd(),
Path(appdirs.user_config_dir('activityrelay'))
]
def get_config_dir(): def get_config_dir():
for path in CONFIG_DIRS: cwd = Path.cwd().joinpath('config.yaml')
cfgpath = path.joinpath('config.yaml') plat = system()
if cwd.exists():
return cwd
elif plat == 'Linux':
cfgpath = Path('~/.config/activityrelay/config.yaml').expanduser()
if cfgpath.exists(): if cfgpath.exists():
return cfgpath return cfgpath
if sys.platform == 'linux':
etcpath = Path('/etc/activityrelay/config.yaml') etcpath = Path('/etc/activityrelay/config.yaml')
if etcpath.exists(): if etcpath.exists() and os.getuid() == etcpath.stat().st_uid:
return etcpath
elif plat == 'Windows':
cfgpath = Path('~/AppData/Roaming/activityrelay/config.yaml').expanduer()
if cfgpath.exists():
return cfgpath return cfgpath
return Path.cwd().joinpath('config.yaml') elif plat == 'Darwin':
cfgpath = Path('~/Library/Application Support/activityaelay/config.yaml')
return cwd
class Config(AppBase, dict): class Config(AppBase, dict):
@ -68,8 +78,9 @@ class Config(AppBase, dict):
path = get_config_dir() path = get_config_dir()
else: else:
path = Path(path).expanduser().resolve() path = Path(path).expanduser()
print(path)
self._path = path self._path = path
self.load() self.load()
@ -81,6 +92,10 @@ class Config(AppBase, dict):
elif key in {'general_port', 'database_min_connections', 'database_max_connections'}: elif key in {'general_port', 'database_min_connections', 'database_max_connections'}:
value = int(value) value = int(value)
elif key == 'sqlite_database':
if not isinstance(value, Path):
value = Path(value)
dict.__setitem__(self, key, value) dict.__setitem__(self, key, value)
@ -93,7 +108,11 @@ class Config(AppBase, dict):
} }
if self.dbtype == 'sqlite': if self.dbtype == 'sqlite':
config['database'] = self.path.with_name('relay.sqlite3') if not self['sqlite_database'].is_absolute():
config['database'] = self.path.with_name(str(self['sqlite_database'])).resolve()
else:
config['database'] = self['sqlite_database'].resolve()
else: else:
for key, value in self.items(): for key, value in self.items():

View file

@ -1,5 +1,4 @@
aiohttp>=3.8.0 aiohttp>=3.8.0
appdirs>=1.4.4
aputils@https://git.barkshark.xyz/barkshark/aputils/archive/0.1.3.tar.gz aputils@https://git.barkshark.xyz/barkshark/aputils/archive/0.1.3.tar.gz
cachetools>=5.2.0 cachetools>=5.2.0
click>=8.1.2 click>=8.1.2