Example #1
0
def completer(text, state):
    from life import get_kernel
    kernel = get_kernel()
    try: matches = completions[text]
    except KeyError: matches = [value for value in kernel.cmnd.keys() if value.startswith(text)]
    try: return matches[state]
    except: return None
Example #2
0
 def run(self):
     """ start this bot. this function does not return until KeyboardInterrupt """
     kernel = get_kernel()
     kernel.boot()
     self.cfg.server = kernel.host
     self.cfg.user = kernel.shelluser
     if kernel.run_args and not "start" in kernel.run_args: kernel.handle_args() ; return
     if not kernel.silent: print("commands are: %s\n" % ", ".join(kernel.cmnd.keys()))
     try:
         readline.set_completer(completer)
         readline.parse_and_bind("tab: complete")
         self.hfile = j(kernel.root, "run", "history")
         if not os.path.isfile(self.hfile): utils.touch(self.hfile)
         if hasattr(readline, "read_history_file"): readline.read_history_file(self.hfile)
     except: logging.error("no readline")
     self.stopped = False
     kernel.bot.register("bot", "console", self)
     while not self.stopped: 
         try: 
             intxt = input("%s -=- %s%s<%s " % (time.strftime(datefmt), BOLD, YELLOW, ENDC))
             if not intxt: continue
             if self.stopped: return
             event = O(bot=self, origin=kernel.shellid, channel="shell", input=intxt, cbtype="CONSOLE")
             event.prepare()
             e = kernel.put(event)
             e.wait()
         except TryAgain: continue
         except NoCommand as ex: self._raw("no %s command available\n" % str(ex))
         except (KeyboardInterrupt, EOFError): break
         except: error()
Example #3
0
 def handle_task(self, *args, **kwargs):
     if not args: raise NoTask()
     task = args[0]
     kernel = get_kernel()
     if "do_exec" in task: kernel.execute(task)
     else:
         try: 
             if task.bot: task.bot.run_cb(task)
             kernel.run_cb(task)
             msg = "elapsed %s" % (time.time() - self.lasttime)
         except Exception as ex: msg = error() ; task.do_display = True
     task.status[str(time.ctime(time.time()))] = msg
Example #4
0
def shutdown():
    """ shutdown L I F E. """
    from life import get_kernel
    kernel = get_kernel()
    try: kernel.shutdown()
    except: error()
    try: os.remove('life.pid')
    except: pass
    if not kernel.run_args: sys.stdout.write("\n")
    sys.stdout.flush()
    time.sleep(0.1)
    os._exit(0)