Add validation to btrestart function

- Track old PID before killing bluetoothd
- Wait for process to actually stop (5s timeout)
- Wait for process to restart (10s timeout)
- Verify new PID is different from old PID
- Provide clear success/failure feedback
- Handle edge cases (no process, restart failure)
- Return proper exit codes (0=success, 1=failure)
- Maintain simplicity while adding robustness

This ensures users know if the restart actually worked.
This commit is contained in:
Paul Frederiksen 2025-10-07 16:45:32 -07:00
commit 897b56045d

View file

@ -20,8 +20,43 @@ alias hidefiles="defaults write com.apple.finder AppleShowAllFiles -bool false &
# Bluetooth restart
function btrestart() {
echo "Restarting Bluetooth daemon..."
# Get the current bluetoothd PID before killing
local old_pid=$(pgrep bluetoothd)
if [ -n "$old_pid" ]; then
echo "Stopping bluetoothd (PID: $old_pid)..."
sudo pkill bluetoothd
echo "Bluetooth daemon restarted."
# Wait for the process to actually stop
local count=0
while pgrep -f "bluetoothd" >/dev/null 2>&1 && [ $count -lt 10 ]; do
sleep 0.5
count=$((count + 1))
done
# Wait for bluetoothd to restart
echo "Waiting for bluetoothd to restart..."
count=0
while ! pgrep bluetoothd >/dev/null 2>&1 && [ $count -lt 20 ]; do
sleep 0.5
count=$((count + 1))
done
# Check if it restarted successfully
local new_pid=$(pgrep bluetoothd)
if [ -n "$new_pid" ] && [ "$new_pid" != "$old_pid" ]; then
echo "✓ Bluetooth daemon restarted successfully (new PID: $new_pid)"
elif [ -n "$new_pid" ] && [ "$new_pid" = "$old_pid" ]; then
echo "⚠ Bluetooth daemon may not have restarted (same PID: $new_pid)"
else
echo "✗ Bluetooth daemon failed to restart"
return 1
fi
else
echo "No bluetoothd process found to restart"
return 1
fi
}
function _omz_macos_get_frontmost_app() {