Skip to the content.
Examples

$.careful()

Since $.careful() works depending on $.exitcode, for local executions, $.careful() works well. But for remote executions, $careful() might only work for one-dollar commands. The “might work” means that it depends on the remote shell and commands’ behavior.

file example-local.spy

from sshscript import SSHScriptCareful

$.careful(1)
try:
    $ls -l /non/existing
except SSHScriptCareful:
    # this works
    $.exit(1)

try:
    $$ls -l /non/existing
except SSHScriptCareful:
    # this works
    $.exit(2)

try:
    with $ls -l /non/existing as _:
        pass
except SSHScriptCareful:
    # this works
    $.exit()

file example-remote.spy

from sshscript import SSHScriptCareful

$.connect('user@host') # ⬅ difference is here.

$.careful(1)
try:
    $ls -l /non/existing
except SSHScriptCareful:
    # this works
    $.exit(1)

try:
    $$ls -l /non/existing
except SSHScriptCareful:
    # Usually this does not work.
    # Since the $.exitcode is usually -1 for remote two-dollars commands.
    # There is not SSHScriptCareful was thrown.
    $.exit(1)

try:
    with $ls -l /non/existing as _:
        pass
except SSHScriptCareful:
    # Usually this does not work.
    # Since the $.exitcode is usually -1 for remote with-dollar commands.
    # There is not SSHScriptCareful was thrown.
    $.exit(1)