Marco Ricci commited on 2024-08-16 12:48:10
Zeige 1 geänderte Dateien mit 24 Einfügungen und 1 Löschungen.
These errors have already been passed through, but they were neither documented nor explicitly handled in the command-line interface with an appropriate error message.
| ... | ... |
@@ -157,6 +157,12 @@ def _get_suitable_ssh_keys( |
| 157 | 157 |
passphrase derivation. |
| 158 | 158 |
|
| 159 | 159 |
Raises: |
| 160 |
+ KeyError: |
|
| 161 |
+ `conn` was `None`, and the `SSH_AUTH_SOCK` environment |
|
| 162 |
+ variable was not found. |
|
| 163 |
+ OSError: |
|
| 164 |
+ `conn` was a socket or `None`, and there was an error |
|
| 165 |
+ setting up a socket connection to the agent. |
|
| 160 | 166 |
LookupError: |
| 161 | 167 |
No keys usable for passphrase derivation are loaded into the |
| 162 | 168 |
SSH agent. |
| ... | ... |
@@ -188,7 +194,7 @@ def _get_suitable_ssh_keys( |
| 188 | 194 |
if vault.Vault._is_suitable_ssh_key(key): # noqa: SLF001 |
| 189 | 195 |
yield pair |
| 190 | 196 |
if not suitable_keys: # pragma: no cover |
| 191 |
- raise IndexError(_NO_USABLE_KEYS) |
|
| 197 |
+ raise LookupError(_NO_USABLE_KEYS) |
|
| 192 | 198 |
|
| 193 | 199 |
|
| 194 | 200 |
def _prompt_for_selection( |
| ... | ... |
@@ -290,6 +296,12 @@ def _select_ssh_key( |
| 290 | 296 |
The selected SSH key. |
| 291 | 297 |
|
| 292 | 298 |
Raises: |
| 299 |
+ KeyError: |
|
| 300 |
+ `conn` was `None`, and the `SSH_AUTH_SOCK` environment |
|
| 301 |
+ variable was not found. |
|
| 302 |
+ OSError: |
|
| 303 |
+ `conn` was a socket or `None`, and there was an error |
|
| 304 |
+ setting up a socket connection to the agent. |
|
| 293 | 305 |
IndexError: |
| 294 | 306 |
The user made an invalid or empty selection, or requested an |
| 295 | 307 |
abort. |
| ... | ... |
@@ -854,12 +866,16 @@ def derivepassphrase( |
| 854 | 866 |
return _load_config() |
| 855 | 867 |
except FileNotFoundError: |
| 856 | 868 |
return {'services': {}}
|
| 869 |
+ except OSError as e: |
|
| 870 |
+ err(f'Cannot load config: {e.strerror}: {e.filename!r}')
|
|
| 857 | 871 |
except Exception as e: # noqa: BLE001 |
| 858 | 872 |
err(f'Cannot load config: {e}')
|
| 859 | 873 |
|
| 860 | 874 |
def put_config(config: _types.VaultConfig, /) -> None: |
| 861 | 875 |
try: |
| 862 | 876 |
_save_config(config) |
| 877 |
+ except OSError as exc: |
|
| 878 |
+ err(f'Cannot store config: {exc.strerror}: {exc.filename!r}')
|
|
| 863 | 879 |
except Exception as exc: # noqa: BLE001 |
| 864 | 880 |
err(f'Cannot store config: {exc}')
|
| 865 | 881 |
|
| ... | ... |
@@ -1013,6 +1029,13 @@ def derivepassphrase( |
| 1013 | 1029 |
) |
| 1014 | 1030 |
except IndexError: |
| 1015 | 1031 |
err('no valid SSH key selected')
|
| 1032 |
+ except KeyError: |
|
| 1033 |
+ err('cannot find running SSH agent; check SSH_AUTH_SOCK')
|
|
| 1034 |
+ except OSError as e: |
|
| 1035 |
+ err( |
|
| 1036 |
+ f'Cannot connect to SSH agent: {e.strerror}: '
|
|
| 1037 |
+ f'{e.filename!r}'
|
|
| 1038 |
+ ) |
|
| 1016 | 1039 |
except (LookupError, RuntimeError) as e: |
| 1017 | 1040 |
err(str(e)) |
| 1018 | 1041 |
elif use_phrase: |
| 1019 | 1042 |