Source code for mods.output
# mods/output.py
#
#
"""
commands that output data.
"""
from mads.name import tname, name
from mads.misc import stripped
from mads.getters import slice
from mads.time import elapsed
from mads.join import j
from mads.object import Object
import threading
import time
import mads
import mids
import os
format = "%-4s %-15s %-10s %-7s %-45s"
[docs]def aliases(event):
""" show aliases. """
event.reply(mids.aliases)
[docs]def announce(event):
""" announce text on all channels in fleet. """
mids.kernel.announce(event._parsed.rest)
[docs]def bot(event):
""" dump bot json. """
for bot in mids.fleet:
if bot.id() == event.id():
event.reply(bot)
[docs]def cfg(event):
""" show config files. """
if not event._parsed.rest:
event.reply(mids.cfg)
return
dcfg = mids.kernel.load(j("cfg", event._parsed.rest))
event.reply(dcfg)
[docs]def cmnds(event):
""" show list of commands. """
res = sorted(set([cmnd for cmnd, mod in mids.kernel._names.items() if event._parsed.rest in str(mod)]))
event.reply(res or "no modules loaded.")
[docs]def fleet(event):
""" show list of running bots. """
event.reply(",".join([x.id() for x in mids.fleet]))
[docs]def kernel(event):
""" show kernel dump. """
event.reply(mids.kernel)
[docs]def ls(event):
""" show subdirs in working directory. """
event.reply(" ".join(os.listdir(mids.cfg.workdir)))
[docs]def modules(event):
""" show kernel dump. """
if not event._parsed.rest:
res = mids.kernel
else:
res = mids.kernel.get(event._parsed.rest, None)
if res:
event.reply(res.nice())
[docs]def pid(event):
""" show pid of the MADS bot. """
event.reply(str(os.getpid()))
[docs]def ps(event):
""" show running threads. """
res = []
nr = 1
txt = []
uptime = elapsed(int(time.time() - mids.kernel._times.start))
event.reply("KERNEL")
event.reply("")
event.reply(format % (0, "kernel", mids.kernel._state.printable(nokeys=True), uptime, mids.kernel._counters.printable()))
for thr in sorted(mids.kernel.running(), key=lambda x: name(x)):
obj = Object(vars(thr))
if "start" not in obj._times:
continue
if "sleep" in obj:
uptime = elapsed(obj.sleep - int(time.time() - obj._times.last))
else:
uptime = elapsed(int(time.time() - obj._times.start))
thrname = tname(thr)
event.reply(format % (nr, thrname, obj._state.printable(nokeys=True), uptime, obj._counters.printable()))
nr += 1
event.reply("")
event.reply("FLEET")
event.reply("")
for bot in mids.fleet.bots:
uptime = elapsed(int(time.time() - bot._times.start))
event.reply(format % (nr, bot.id(), bot._state.printable(nokeys=True), uptime,bot._counters.printable()))
nr += 1
[docs]def runtime(event):
""" print runtime dump. """
event.reply(str(mids.runtime))
[docs]def seen(event):
event.reply(mids.seen)
[docs]def users(event):
event.reply(mids.users)
[docs]def test(event):
""" echo origin. """
event.reply(stripped(event.origin))
[docs]def uptime(event):
""" show uptime. """
event.reply("uptime is %s" % elapsed(time.time() - mads._starttime))
[docs]def version(event):
""" show version. """
event.reply("MADS #%s - %s" % (mads.__version__, mads.__txt__))
[docs]def whoami(event):
""" show origin. """
event.reply(event.origin)