Highlights
🐛 Commands that only logged a failure now exit non-zero
A number of commands caught their own failure, logged it and returned, so the process exited 0 and a script carried on as if the command had worked. They now exit 1 after the same error line:
pymobiledevice3 developer dvt ls /no/such/dir; echo $?
# ERROR Failed to list directory: /no/such/dir
# 1Affected commands:
webinspector opened-tabs,launch,shell,js-shellwith Web Inspector or Remote Automation off, when the app fails to launch, or (js-shell) with no open page to attach todeveloper arbitration check-inwhen another host holds the devicedeveloper dvt core-profile-session stackshotwhen no stackshot came backdeveloper dvt ls PATHwhen PATH can't be listed (with-r, entries below it that can't be listed are still only logged)lockdown save-pair-recordwith no pair recordbackup2 change-passwordwith backup encryption offremote pairwhen the bonjour browse finds no devicedeveloper debugserver start-serveron iOS < 17 without--local-portdeveloper debugserver lldbon iOS < 17, for a missing.xcodeproj/.ipa, a build with no.app, an.ipawithout exactly one.app, or a bundle id that isn't installed
Scripts that relied on exit 0 from these failure paths need updating.
🐛 backup2 erase-device no longer reports a successful erase as a failure
The device drops the link once it starts erasing. That was logged as "Connection was terminated abruptly" with exit 1, and with --reconnect the erase was attempted again once the device came back. The drop is now treated as the expected end of the request; a link that drops before the erase was requested still fails.
What's Changed
- eb0ba57 cli: Exit non-zero on failures that were only logged (#2015) (@Cassian433)
- efc78b6 mobilebackup2: Return from erase_device when the device drops the link (#2015) (@Cassian433)
Full Changelog: v11.27.1...v11.27.2