Highlights
🐛 The CLI now exits with a nonzero status when a command fails
Until now, a command that failed on a handled error - device not found, not paired, usbmuxd unreachable, a service that refused to start, an AFC failure, and so on - logged a one-line error and then exited 0, so shell scripts and CI pipelines could not tell a failed invocation from a successful one. main() now returns a proper exit code and python -m pymobiledevice3 / the pymobiledevice3 entry point pass it to the process:
| Outcome | Exit code |
|---|---|
| Command completed | 0
|
| Typer usage error (bad option, missing file argument) | 2 (unchanged)
|
| Handled runtime failure (no device, not paired, service/AFC error, ...) | 1
|
Ctrl-C while --reconnect waits for the device to come back
| 130
|
With --reconnect, a retried attempt now propagates its own real exit code instead of being flattened to a generic error.
pymobiledevice3 apps install app.ipa --udid no-such-device || echo "install failed"Thanks @GuySuday!
What's Changed
Full Changelog: v11.11.0...v11.12.0