diff --git a/commands2/cmd.py b/commands2/cmd.py index 7e9f535..42b9043 100644 --- a/commands2/cmd.py +++ b/commands2/cmd.py @@ -95,6 +95,22 @@ def runEnd( ) +def startRun( + start: Callable[[], Any], run: Callable[[], Any], *requirements: Subsystem +) -> Command: + """ + Constructs a command that runs an action once and another action every iteration until interrupted. + + :param start: the action to run on start + :param run: the action to run every iteration + :param requirements: subsystems the action requires + :returns: the command + """ + return FunctionalCommand( + start, run, lambda interrupt: None, lambda: False, *requirements + ) + + def print_(message: str) -> Command: """ Constructs a command that prints a message and finishes. diff --git a/commands2/subsystem.py b/commands2/subsystem.py index 3cb2792..1abdf23 100644 --- a/commands2/subsystem.py +++ b/commands2/subsystem.py @@ -156,6 +156,18 @@ def runEnd(self, run: Callable[[], None], end: Callable[[], None]) -> Command: return runEnd(run, end, self) + def startRun(self, start: Callable[[], None], run: Callable[[], None]) -> Command: + """ + Constructs a command that runs an action once and another action every iteration until interrupted. Requires this subsystem. + + :param start: the action to run on start + :param run: the action to run every iteration + :returns: the command + """ + from .cmd import startRun + + return startRun(start, run, self) + # # From SubsystemBase #