import synapse.lib.cli as s_cli
import synapse.cmds.boss as s_cmds_boss
import synapse.cmds.cron as s_cmds_cron
import synapse.cmds.hive as s_cmds_hive
import synapse.cmds.cortex as s_cmds_cortex
import synapse.cmds.trigger as s_cmds_trigger
cmdsbycell = {
'cell': (
s_cmds_hive.HiveCmd,
s_cmds_boss.PsCmd,
s_cmds_boss.KillCmd,
),
'cortex': (
s_cmds_cron.At,
s_cmds_cron.Cron,
s_cmds_cortex.Log,
s_cmds_boss.PsCmd,
s_cmds_boss.KillCmd,
s_cmds_hive.HiveCmd,
s_cmds_cortex.StormCmd,
s_cmds_trigger.Trigger,
),
}
[docs]async def getItemCmdr(cell, outp=None, color=False, **opts):
'''
Construct and return a cmdr for the given remote cell.
Args:
cell: Cell proxy being commanded.
outp: Output helper object.
color (bool): If true, enable colorized output.
**opts: Additional options pushed into the Cmdr locs.
Examples:
Get the cmdr for a proxy::
cmdr = await getItemCmdr(foo)
Returns:
s_cli.Cli: A Cli instance with Cmds loaeded into it.
'''
cmdr = await s_cli.Cli.anit(cell, outp=outp)
if color:
cmdr.colorsenabled = True
typename = await cell.getCellType()
for ctor in cmdsbycell.get(typename, ()):
cmdr.addCmdClass(ctor)
return cmdr
[docs]async def runItemCmdr(item, outp=None, color=False, **opts):
'''
Create a cmdr for the given item and run the cmd loop.
Args:
item: Cell proxy being commanded.
outp: Output helper object.
color (bool): If true, enable colorized output.
**opts: Additional options pushed into the Cmdr locs.
Notes:
This function does not return while the command loop is run.
Examples:
Run the Cmdr for a proxy::
await runItemCmdr(foo)
Returns:
None: This function returns None.
'''
cmdr = await getItemCmdr(item, outp=outp, color=color, **opts)
await cmdr.runCmdLoop()