remove appdirs dep and add option to set sqlite database path
This commit is contained in:
parent
e3c4377db6
commit
04ae6a8851
|
@ -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
|
||||||
|
|
|
@ -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():
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in a new issue