`main.db` should use the configured `workdir` when not specified.

Closes: #234
Reviewed-On: #234
This commit is contained in:
Fabio Manganiello 2022-12-09 23:37:10 +01:00
parent 3b1147eaae
commit 219a0a99ca
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,