refactor engine.data to separate basic file functionality

This commit is contained in:
cecilkorik 2025-04-24 00:29:30 -04:00
parent 67e7316a69
commit f98eb79c57
3 changed files with 34 additions and 29 deletions

View file

@ -2,7 +2,7 @@ import json
from collections import UserDict from collections import UserDict
import os import os
import sys import sys
from . import data from . import file as filemanager
class SettingsLoader(UserDict): class SettingsLoader(UserDict):
def __init__(self: object, files: list) -> None: def __init__(self: object, files: list) -> None:
@ -11,10 +11,10 @@ class SettingsLoader(UserDict):
self.reload() self.reload()
def load_settings_file(self: object, file: str) -> None: def load_settings_file(self: object, file: str) -> None:
if not data.exists('conf', file): if not filemanager.exists('conf', file):
return return
ext = os.path.splitext(file)[1] ext = os.path.splitext(file)[1]
with data.fd_open('conf', file) as fd: with filemanager.fd_open('conf', file) as fd:
if ext == '.json': if ext == '.json':
self.data.update(json.load(fd)) self.data.update(json.load(fd))
else: else:
@ -42,10 +42,11 @@ class SettingsWritable(SettingsMutable):
for k in self.data.keys(): for k in self.data.keys():
if not k in defaults: if not k in defaults:
outdata[k] = self.data[k] outdata[k] = self.data[k]
if outdata or data.exists('conf', self.outfile): if outdata or filemanager.exists('conf', self.outfile):
with data.fd_write('conf', self.outfile) as fd: with filemanager.fd_write('conf', self.outfile) as fd:
json.dump(outdata, fd, indent=4) json.dump(outdata, fd, indent=4)
init = SettingsWritable(['default.json', 'user.json'], 'user.json') init = SettingsWritable(['default.json', 'user.json'], 'user.json')

View file

@ -1,27 +1,7 @@
import os import os
import sys import sys
from . import config
g_pp = None from .file import *
def program_path() -> str:
global g_pp
if g_pp == None:
g_pp = os.path.abspath(os.path.split(sys.argv[0])[0])
return g_pp
def exists(vault: str, path: str) -> bool:
fp = os.path.join(program_path(), vault, path)
return os.path.exists(fp)
def fd_open(vault: str, path: str) -> object:
fp = os.path.join(program_path(), vault, path)
return open(fp, 'r')
def fd_write(vault: str, path: str) -> object:
fp = os.path.join(program_path(), vault, path)
os.makedirs(os.path.join(program_path(), vault), exist_ok=True)
return open(fp, 'w')
g_data = {} g_data = {}
@ -74,4 +54,3 @@ def load_mods() -> None:
if '' in full_modlist[mn]: if '' in full_modlist[mn]:
modlist[mn] = full_modlist[mn][''] modlist[mn] = full_modlist[mn]['']

25
engine/file.py Normal file
View file

@ -0,0 +1,25 @@
import os
import sys
g_pp = None
def program_path() -> str:
global g_pp
if g_pp == None:
g_pp = os.path.abspath(os.path.split(sys.argv[0])[0])
return g_pp
def exists(vault: str, path: str) -> bool:
fp = os.path.join(program_path(), vault, path)
return os.path.exists(fp)
def fd_open(vault: str, path: str) -> object:
fp = os.path.join(program_path(), vault, path)
return open(fp, 'r')
def fd_write(vault: str, path: str) -> object:
fp = os.path.join(program_path(), vault, path)
os.makedirs(os.path.join(program_path(), vault), exist_ok=True)
return open(fp, 'w')