Source code for flexlate_dev.command_runner
from typing import Sequence, Union
from flexlate_dev.ext_subprocess import (
run_command_in_background_stream_output,
run_command_stream_output,
)
from flexlate_dev.styles import INFO_STYLE, print_styled
from flexlate_dev.user_command import UserCommand
Runnable = Union[UserCommand, str]
[docs]def run_command_or_command_strs(cmds: Sequence[Runnable]):
for cmd in cmds:
if isinstance(cmd, str):
command = UserCommand.from_string(cmd)
else:
command = cmd
run_command(command)
[docs]def run_command(cmd: UserCommand):
print_styled(f"Running command: {cmd.display_name}", INFO_STYLE)
if cmd.run is None:
raise ValueError(f"Cannot run command {cmd} as run=None")
if cmd.background:
run_command_in_background_stream_output(cmd.run)
else:
run_command_stream_output(cmd.run)