81 lines
1.6 KiB
Python
81 lines
1.6 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
|
|
glb[distro + "l"].g = glb
|
|
exec(code,glb)
|
|
return glb
|
|
|
|
def dofile(path):
|
|
return docode(open(path,encoding="utf-8").read(),path)
|
|
|
|
def dorequire(name,*args,**kwargs):
|
|
for path in paths:
|
|
path = path.replace("?",name)
|
|
if os.path.isfile(path):
|
|
return dofile(path,*args,**kwargs)
|
|
raise Exception("Library " +name+ " not found.")
|
|
|
|
def require(name,*args,**kwargs):
|
|
if not name in loaded:
|
|
loaded[name] = dorequire(name,*args,**kwargs)
|
|
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,"module","?.py"))
|
|
paths.append(p(modl.sd,"module","?","_main.py")) |