Source code for kern
# kern/__init__.py
#
#
""" KERN package - kernel, plugs, cfg, fleet """
__copyright__ = "Copyright 2015, B.H.J Thate"
__version__ = 16
## IMPORTS
from kern.utils.opts import make_opts, opts_defs
from kern.utils.other import hello, show_eggs
from kern.cfg import cfg_kernel
from kern.thing import Thing
from kern.plugs import Plugs
from kern.log import init
import logging
import time
import sys
import os
## PATH
[docs]def kernpath():
for path in sys.path:
if "kern" in path and "egg" in path: yield path
## KERNEL
[docs]class Kernel(Plugs):
[docs] def boot(zelf, *args, **kwargs):
zelf._start = time.time()
opts, arglist = make_opts(opts_defs)
cfg.update(cfg_kernel)
cfg.update(vars(opts))
for key,value in kwargs.items():
if not getattr(cfg , key, ""): cfg[key] = value
if not cfg.workdir: cfg.workdir = os.path.expanduser("~/kern.data")
cfg.runargs = arglist
cfg.shell = True
if arglist: cfg.shell = False ; init("error")
else: init(cfg.loglevel, colors=cfg.colors)
if cfg.shell and args: hello(*args, **cfg)
if cfg.path:
for path in sys.path: print(path)
print()
plugs.boot(cfg.packages)
if "all" in cfg.eggs: plugs.loaddir(os.getcwd())
else:
for mod in cfg.eggs.split(","):
if not mod: continue
try: plugs.load(mod)
except Exception as ex: print(ex)
plugs.init("system")
zelf.ready()
return zelf
[docs] def shutdown(zelf, *args, **kwargs):
logging.warn("# shutdown")
plugs.shutdown(cfg.packages)
## DEFINITIES
kernel = Kernel()
plugs = Plugs()
cfg = Thing()
fleet = []