main.db should use the configured workdir when not specified.' (#235)

Reviewed-on: platypush/platypush#235
Closes: platypush/platypush#234
This commit is contained in:
Fabio Manganiello 2022-12-09 23:41:07 +01:00
commit a17bc3c474
2 changed files with 25 additions and 9 deletions

View file

@ -4,6 +4,13 @@ All notable changes to this project will be documented in this file.
Given the high speed of development in the first phase, changes are being Given the high speed of development in the first phase, changes are being
reported only starting from v0.20.2. reported only starting from v0.20.2.
## [Unreleased]
## Fixed
- The `main.db` configuration should use the configured `workdir` when no
values are specified.
## [0.24.1] ## [0.24.1]
### Fixed ### Fixed

View file

@ -10,6 +10,7 @@ import re
import shutil import shutil
import socket import socket
import sys import sys
from urllib.parse import quote
from typing import Optional from typing import Optional
import yaml import yaml
@ -72,7 +73,7 @@ class Config:
if cfgfile is None: if cfgfile is None:
cfgfile = self._create_default_config() cfgfile = self._create_default_config()
self._cfgfile = os.path.abspath(os.path.expanduser(cfgfile)) cfgfile = self._cfgfile = os.path.abspath(os.path.expanduser(cfgfile))
self._config = self._read_config_file(self._cfgfile) self._config = self._read_config_file(self._cfgfile)
if 'token' in self._config: if 'token' in self._config:
@ -80,6 +81,7 @@ class Config:
if 'workdir' not in self._config: if 'workdir' not in self._config:
self._config['workdir'] = self._workdir_location self._config['workdir'] = self._workdir_location
self._config['workdir'] = os.path.expanduser(self._config['workdir'])
os.makedirs(self._config['workdir'], exist_ok=True) os.makedirs(self._config['workdir'], exist_ok=True)
if 'scripts_dir' not in self._config: if 'scripts_dir' not in self._config:
@ -94,6 +96,7 @@ class Config:
) )
os.makedirs(self._config['dashboards_dir'], mode=0o755, exist_ok=True) os.makedirs(self._config['dashboards_dir'], mode=0o755, exist_ok=True)
# Create a default (empty) __init__.py in the scripts folder
init_py = os.path.join(self._config['scripts_dir'], '__init__.py') init_py = os.path.join(self._config['scripts_dir'], '__init__.py')
if not os.path.isfile(init_py): if not os.path.isfile(init_py):
with open(init_py, 'w') as f: with open(init_py, 'w') as f:
@ -106,15 +109,21 @@ class Config:
) )
sys.path = [scripts_parent_dir] + sys.path sys.path = [scripts_parent_dir] + sys.path
self._config['db'] = self._config.get( # Initialize the default db connection string
'main.db', db_engine = self._config.get('main.db', '')
{ if db_engine:
'engine': 'sqlite:///' if isinstance(db_engine, str):
+ os.path.join( db_engine = {
os.path.expanduser('~'), '.local', 'share', 'platypush', 'main.db' 'engine': db_engine,
}
else:
db_engine = {
'engine': 'sqlite:///' + os.path.join(
quote(self._config['workdir']), 'main.db'
) )
}, }
)
self._config['db'] = db_engine
logging_config = { logging_config = {
'level': logging.INFO, 'level': logging.INFO,