Command

The scherbelberg.Command class describes shell commands and allows to manipulate and chain them quickly via pipes - very similar to what Python’s pathlib does to paths. It uses the scherbelberg.Process class to actually run the commands asynchronously.

The Command Class

class scherbelberg.Command(cmd)

Representing a chain of commands, connected via pipes. Immutable.

Parameters

cmd (List[List[str]]) – List of list of strings. Each inner list represents one command compatible to subprocess.Popen.

__len__()

Number of chained commmands

Return type

int

__or__(other)

Pipe

Parameters

other (CommandABC) –

Return type

CommandABC

__repr__()

Interactive string representation

Return type

str

__str__()

String conversion

Return type

str

property cmd: List[List[str]]

List of list of strings. Each inner list represents one command compatible to subprocess.Popen. This interface can not be used to change the command.

Return type

List[List[str]]

classmethod from_list(cmd)

Generates a scherbelberg.Command object from a list of strings compatible to subprocess.Popen.

Parameters

cmd (List[str]) – A list of strings compatible to subprocess.Popen.

Return type

CommandABC

Returns

New command object.

classmethod from_scp(*source, target, host)

Generates a scherbelberg.Command object representing an scp command. Only supports copy operations from the local system to the remote host.

Parameters
  • source (str) – An arbitrary number of paths on the local system.

  • target (str) – Target path on the remote system.

  • host (SSHConfigABC) – SSH configuration.

Return type

CommandABC

Returns

New command object.

classmethod from_str(cmd)

Generates a scherbelberg.Command object from a single string containing a (shell) command.

Parameters

cmd (str) – Single string containing a (shell) command.

Return type

CommandABC

Returns

New command object.

on_host(host)

Adds a ssh prefix to the command so it can be executed on a remote host. Does not change the current command but returns a new one.

Parameters

host (SSHConfigABC) – SSH configuration

Return type

CommandABC

Returns

A new scherbelberg.Command object which can be executed on the remote host.

async run(returncode=False, timeout=None, wait=1.0)

Run command or chain of commands in a scherbelberg.Process object.

Parameters
  • returncode (bool) – If set to True, returns actual return code and does not raise an exception if the command(s) failed. If set to False, a failed command raises an exception and only data from standard output and standard error streams is returned.

  • timeout (Union[float, int, None]) – Total timeout in seconds.

  • wait (float) – Interval defining every how many seconds the status of the running process is being observed.

Return type

Union[Tuple[List[str], List[str], List[int], Exception], Tuple[List[str], List[str]]]

Returns

A tuple, the first two elements containing data from standard output and standard error streams. If returncode is set to True, the tuple has two additional entries, a list of return codes and an exception object that can be raised by the caller.