Mercurial > pyshada
view shada/shhelper.py @ 21:86d71eb1c66c
Helper for interactive shell
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Thu, 31 Mar 2011 20:46:08 +0800 |
parents | |
children | 08f19afde7bd |
line wrap: on
line source
from shada import comm def def_cmd(args, env, session): pass def cmds(args, env, session): all_cmds = [k for k, v in ns.items() if callable(v)] txt = '\n'.join(all_cmds) + '\n' session.send(txt) pass def values(args, env, session): all_values = ['%s=%s' % (k, repr(v)) for k, v in ns.items() if not callable(v)] txt = '\n'.join(all_values) + '\n' session.send(txt) pass def set(args, env, session): if len(args) == 0: return if len(args) == 1: varname = args[0] del ns[varname] return varname = args[0] value = ' '.join(args[1:]) ns[varname] = value pass if __name__ == '__main__': import os ns = {'def': def_cmd, 'cmds': cmds, 'values': values, 'set': set} server = comm.server(ns) server.listen() ns['server'] = server pid = os.fork() if pid == 0: # child import sys, os sys.stdout.close() sys.stdin.close() os.close(0) os.close(1) os.setpgid(os.getpid(), os.getpid()) server.handle() else: addr = server.get_addr() print 'PYSHELL_SERVER="%s"; export PYSHELL_SERVER; py="python -m shada.shell_agent"; export py' % (addr) pass pass