Source code for xonsh.prompt.job
"""Prompt formatter for current jobs"""
import contextlib
import typing as tp
from xonsh.prompt.base import PromptField
[docs]
class CurrentJobField(PromptField):
_current_cmds: tp.Optional[list] = None
[docs]
def update(self, ctx):
if self._current_cmds is not None:
cmd = self._current_cmds[-1]
s = cmd[0]
if s == "sudo" and len(cmd) > 1:
s = cmd[1]
self.value = s
else:
self.value = None
[docs]
@contextlib.contextmanager
def update_current_cmds(self, cmds):
"""Context manager that updates the information used to update the job name"""
old_cmds = self._current_cmds
try:
self._current_cmds = cmds
yield
finally:
self._current_cmds = old_cmds