ensuring ownership of all created files and folders

xkb
sezanzeb 4 years ago committed by sezanzeb
parent c75bd9f6ea
commit 6d9f1c44c5

@ -27,7 +27,7 @@ import json
import shutil
import copy
from keymapper.paths import CONFIG
from keymapper.paths import CONFIG, touch
from keymapper.logger import logger
@ -98,10 +98,7 @@ class _Config:
def save_config(self):
"""Save the config to the file system."""
if not os.path.exists(CONFIG_PATH):
logger.debug('Creating "%s"', CONFIG_PATH)
os.makedirs(os.path.dirname(CONFIG_PATH), exist_ok=True)
os.mknod(CONFIG_PATH)
touch(CONFIG_PATH)
with open(CONFIG_PATH, 'w') as file:
json.dump(self._config, file, indent=4)

@ -113,8 +113,7 @@ def add_filehandler(path='~/.log/key-mapper'):
log_path = os.path.expanduser(path)
log_file = os.path.join(log_path, 'log')
if not os.path.exists(log_path):
os.makedirs(log_path)
os.makedirs(log_path, exist_ok=True)
if os.path.exists(log_file):
# keep the log path small, start from scratch each time

@ -24,11 +24,10 @@
import os
import json
import shutil
import copy
from keymapper.logger import logger
from keymapper.paths import get_config_path
from keymapper.paths import get_config_path, touch
def keep_reverse_mapping_intact(func):
@ -171,12 +170,7 @@ class Mapping:
path = get_config_path(device, preset)
logger.info('Saving preset to %s', path)
if not os.path.exists(path):
logger.debug('Creating "%s"', path)
os.makedirs(os.path.dirname(path), exist_ok=True)
os.mknod(path)
# if this is done with sudo rights, give the file to the user
shutil.chown(path, os.getlogin(), os.getlogin())
touch(path)
with open(path, 'w') as file:
# make sure to keep the option to add metadata if ever needed,

@ -23,11 +23,45 @@
import os
import shutil
from keymapper.logger import logger
CONFIG = os.path.join('/home', os.getlogin(), '.config/key-mapper')
def touch(path, log=True):
"""Create an empty file and all its parent dirs, give it to the user."""
if os.path.exists(path):
return
if log:
logger.info('Creating file "%s"', path)
mkdir(os.path.dirname(path), log=False)
os.mknod(path)
shutil.chown(path, os.getlogin(), os.getlogin())
def mkdir(path, log=True):
"""Create a folder, give it to the user."""
if os.path.exists(path):
return
if log:
logger.info('Creating dir "%s"', path)
# give all newly created folders to the user.
# e.g. if .config/key-mapper/mouse/ is created the latter two
base = os.path.split(path)[0]
mkdir(base, log=False)
os.makedirs(path)
shutil.chown(path, os.getlogin(), os.getlogin())
def get_config_path(device=None, preset=None):
"""Get a path to the stored preset, or to store a preset to."""
if device is None:

@ -26,7 +26,7 @@ import os
import time
import glob
from keymapper.paths import get_config_path
from keymapper.paths import get_config_path, mkdir
from keymapper.logger import logger
from keymapper.getdevices import get_devices
@ -53,8 +53,7 @@ def get_presets(device):
device : string
"""
device_folder = get_config_path(device)
if not os.path.exists(device_folder):
os.makedirs(device_folder)
mkdir(device_folder)
paths = glob.glob(os.path.join(device_folder, '*.json'))
presets = [

Loading…
Cancel
Save