from circuits import (
Debugger, Manager,
Loader, Component,
Worker, handler,
Event
)
import os, sys
pathname = sys.path[0]
old_syspath = sys.path
sys.path = [
os.path.join(pathname, 'config'),
os.path.join(pathname, 'lib'),
os.path.join(pathname, 'Scheduler'),
] + sys.path
class load(Event):
pass
class ScheduleTask(Event):
pass
class DiscoverAddin(Event):
pass
class Application(Component):
@handler("DiscoverAddin")
def discover_addin(self, component, **ctor_init_args):
print("Registered {component}.".format(component = component))
for i, (it) in enumerate(ctor_init_args):
if it in self.ctor_args_list:
continue
else:
self.ctor_args_list[it] = ctor_init_args[it]
def init(self, path):
self.ctor_args_list, self.path_list = {}, \
sys.path[1: sys.path.index(path)]
for i, (it) in enumerate([
Component, Event, Worker,
handler,
ScheduleTask, DiscoverAddin
]):
try:
__builtins__[it.__qualname__] = it
except TypeError:
setattr(__builtins__, it.__qualname__, it)
self.loader = Loader(
paths = self.path_list
).register(self)
for i, (filename) in enumerate([
it for it in os.listdir(self.path_list[0])
if not it == '__pycache__'
]):
filename, ext = os.path.splitext(filename)
self.fire(load(filename))
print()
def started(self, component):
old_channel = self.channel
##
## =============================================================
## == This is what I wanted to do-- initialize each component ==
## == separately so that I can separately set up the EventLog ==
## == incoming Task/Job so that it can fire events correctly, ==
## == or route them to interested service handlers. ==
## =============================================================
##
# for i, (filename) in enumerate([
# it for it in os.listdir(self.path_list[1])
# if not it == '__pycache__'
# ]):
# filename, ext = os.path.splitext(filename)
# self.fire(load(filename))
#
## Initialize component
# self.channel = filename
# self.fire(component_init())
Application(old_syspath[0]).run()