56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import os
|
|
import sys
|
|
from . import config
|
|
from .file import *
|
|
|
|
g_data = {}
|
|
|
|
class ModInfo(object):
|
|
def __init__(self: object, modname: str):
|
|
self.name = modname
|
|
self.modinfo = None
|
|
|
|
class ModInfoDir(ModInfo):
|
|
def __init__(self: object, modname: str):
|
|
super().__init__(modname)
|
|
|
|
def path(self: object, path: str) -> str:
|
|
return os.path.join(self.name, path)
|
|
|
|
def exists(self: object, path: str) -> object:
|
|
return exists('data', self.path(path))
|
|
|
|
def fd_open(self: object, path: str) -> object:
|
|
return fd_open('data', self.path(path))
|
|
|
|
def has_modinfo(self: object) -> bool:
|
|
return exists('data', self.path('modinfo.json'))
|
|
|
|
def read_modinfo(self: object) -> None:
|
|
inffile = self.fd_open('data', self.path('modinfo.json'))
|
|
self.modinfo = json.load(inffile)
|
|
|
|
|
|
def load_mods() -> None:
|
|
global g_data
|
|
g_data = {}
|
|
|
|
full_modlist = {}
|
|
for mod in os.listdir(os.path.join(program_path(), 'data')):
|
|
mn, me = os.path.splitext(mod)
|
|
if not mn in full_modlist:
|
|
full_modlist[mn] = {}
|
|
if me.lower() == 'zip':
|
|
# handle zip mods here somehow
|
|
# full_modlist[mn][me] = mod
|
|
pass
|
|
elif me == '' or os.path.isdir(os.path.join(program_path(), 'data', mn)):
|
|
moddata = ModInfoDir()
|
|
if moddata.has_modinfo():
|
|
full_modlist[mn][me] = moddata
|
|
|
|
modlist = {}
|
|
for mn in full_modlist.keys():
|
|
if '' in full_modlist[mn]:
|
|
modlist[mn] = full_modlist[mn]['']
|
|
|