me.fier.python/modpy/me/fier/python/__init__.py

78 lines
1.5 KiB
Python

import os
# BUNCH
try:
import munch
Bunch = munch.Munch
bunchify = munch.munchify
unbunchify = munch.unmunchify
except Exception:
import bunch
Bunch = munch.Bunch
bunchify = munch.bunchify
unbunchify = munch.unbunchify
# GLOBALS
g = Bunch()
# SCRIPTS
paths = []
loaded = Bunch()
def docode(st,name = "Unknown"):
code = compile(st,name,"exec")
glb = Bunch()
glb[distro] = me
glb[distro + "l"] = Bunch()
glb[distro + "l"].s = name
try:
glb[distro + "l"].sd = pUp(name)
except Exception:
pass
exec(code,glb)
return glb
def dofile(path):
return docode(open(path,encoding="utf-8").read(),path)
def require(name,*args,**kwargs):
if not name in loaded:
for path in paths:
path = path.replace("?",name)
if os.path.isfile(path):
loaded[name] = dofile(path,*args,**kwargs)
return loaded[name]
raise Exception("Library " +name+ " not found.")
return loaded[name]
# PROGRAM
programName = None
programNameSet = False
def setProgramName(name):
global programName,programNameSet
if programNameSet: return
programNameSet = True
programName = name
# INIT
inited = False
def init(mod,modl,sp,d):
global inited
if inited: return
global distro,me,p,pUp,programName,programNameSet,s,sd,distro
import sys
inited = True
distro = d
me = mod
p = os.path.join
pUp = os.path.dirname
s = sp
sd = pUp(sp)
modl.s = s
modl.sd = sd
programName = distro + "." + s.replace(modl.sd + os.path.sep,"",1).rsplit(".",1)[0]
programNameSet = False
paths.append(p(modl.sd,"mod" +distro, "?.py"))
paths.append(p(modl.sd,"mod" +distro, "?","main.py"))