mirror of
https://github.com/SteamDeckHomebrew/decky-loader.git
synced 2026-06-17 08:47:49 +00:00
Fix for wrong path for settings json files (#258)
Co-authored-by: AAGaming <aa@mail.catvibers.me>
This commit is contained in:
@@ -1,3 +1,5 @@
|
|||||||
|
import grp
|
||||||
|
import pwd
|
||||||
import re
|
import re
|
||||||
import ssl
|
import ssl
|
||||||
import subprocess
|
import subprocess
|
||||||
@@ -56,6 +58,14 @@ def get_user() -> str:
|
|||||||
raise ValueError("helpers.get_user method called before user variable was set. Run helpers.set_user first.")
|
raise ValueError("helpers.get_user method called before user variable was set. Run helpers.set_user first.")
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
#Get the user owner of the given file path.
|
||||||
|
def get_user_owner(file_path) -> str:
|
||||||
|
return pwd.getpwuid(os.stat(file_path).st_uid)[0]
|
||||||
|
|
||||||
|
#Get the user group of the given file path.
|
||||||
|
def get_user_group(file_path) -> str:
|
||||||
|
return grp.getgrgid(os.stat(file_path).st_gid)[0]
|
||||||
|
|
||||||
# Set the global user group. get_user must be called first
|
# Set the global user group. get_user must be called first
|
||||||
def set_user_group() -> str:
|
def set_user_group() -> str:
|
||||||
global group
|
global group
|
||||||
|
|||||||
+20
-4
@@ -1,20 +1,36 @@
|
|||||||
import imp
|
|
||||||
from json import dump, load
|
from json import dump, load
|
||||||
from os import mkdir, path
|
from os import mkdir, path, listdir, rename
|
||||||
|
from shutil import chown
|
||||||
|
|
||||||
from helpers import get_home_path, get_homebrew_path, get_user, set_user
|
from helpers import get_home_path, get_homebrew_path, get_user, set_user, get_user_owner
|
||||||
|
|
||||||
|
|
||||||
class SettingsManager:
|
class SettingsManager:
|
||||||
def __init__(self, name, settings_directory = None) -> None:
|
def __init__(self, name, settings_directory = None) -> None:
|
||||||
set_user()
|
set_user()
|
||||||
USER = get_user()
|
USER = get_user()
|
||||||
|
wrong_dir = get_homebrew_path(get_home_path(USER))
|
||||||
if settings_directory == None:
|
if settings_directory == None:
|
||||||
settings_directory = get_homebrew_path(get_home_path(USER))
|
settings_directory = path.join(wrong_dir, "settings")
|
||||||
|
|
||||||
self.path = path.join(settings_directory, name + ".json")
|
self.path = path.join(settings_directory, name + ".json")
|
||||||
|
|
||||||
|
#Create the folder with the correct permission
|
||||||
if not path.exists(settings_directory):
|
if not path.exists(settings_directory):
|
||||||
mkdir(settings_directory)
|
mkdir(settings_directory)
|
||||||
|
chown(settings_directory, USER, USER)
|
||||||
|
|
||||||
|
#Copy all old settings file in the root directory to the correct folder
|
||||||
|
for file in listdir(wrong_dir):
|
||||||
|
if file.endswith(".json"):
|
||||||
|
rename(path.join(wrong_dir,file),
|
||||||
|
path.join(settings_directory, file))
|
||||||
|
self.path = path.join(settings_directory, name + ".json")
|
||||||
|
|
||||||
|
|
||||||
|
#If the owner of the settings directory is not the user, then set it as the user:
|
||||||
|
if get_user_owner(settings_directory) != USER:
|
||||||
|
chown(settings_directory, USER, USER)
|
||||||
|
|
||||||
self.settings = {}
|
self.settings = {}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user