refactor(doctor): dedup usbmuxd socket path via ioscompanion seam

This commit is contained in:
pj committed 2026-06-09 18:22:55 +05:30
1 parent e7ae05c4d8
commit d6d7f7074f
2 files changed
+13 -8

No files matched your search

+2 -8
View File
@@ -134,6 +134,7 @@ func checkSimctl(ctx context.Context) error {
var ( var (
doctorConnectedDevices = ios.ConnectedDevices doctorConnectedDevices = ios.ConnectedDevices
doctorVerifySigning = ioscompanion.VerifyDeviceSigning doctorVerifySigning = ioscompanion.VerifyDeviceSigning
doctorVerifyUsbmuxd = ioscompanion.VerifyUsbmuxdSocket
) )
// checkDevicectl exercises `xcrun devicectl --version`: devicectl is an xcrun // checkDevicectl exercises `xcrun devicectl --version`: devicectl is an xcrun
@@ -145,17 +146,10 @@ func checkDevicectl(ctx context.Context) error {
return nil return nil
} }
// usbmuxdSocketPath is the macOS usbmuxd unix socket. It ships with the OS, so
// the device tunnel needs nothing installed.
const usbmuxdSocketPath = "/var/run/usbmuxd"
// checkUsbmuxd confirms the macOS usbmuxd socket is present: the native device // checkUsbmuxd confirms the macOS usbmuxd socket is present: the native device
// tunnel speaks to it directly instead of shelling out to a third-party client. // tunnel speaks to it directly instead of shelling out to a third-party client.
func checkUsbmuxd(_ context.Context) error { func checkUsbmuxd(_ context.Context) error {
if _, err := os.Stat(usbmuxdSocketPath); err != nil { return doctorVerifyUsbmuxd()
return fmt.Errorf("usbmuxd socket not found at %s: %w", usbmuxdSocketPath, err)
}
return nil
} }
// checkDeviceConnected confirms at least one physical iOS device is connected // checkDeviceConnected confirms at least one physical iOS device is connected
+11
View File
@@ -15,6 +15,7 @@ import (
"fmt" "fmt"
"io" "io"
"net" "net"
"os"
"sort" "sort"
"strconv" "strconv"
"strings" "strings"
@@ -24,6 +25,16 @@ import (
// an installed dependency. // an installed dependency.
const usbmuxdSocket = "/var/run/usbmuxd" const usbmuxdSocket = "/var/run/usbmuxd"
// VerifyUsbmuxdSocket reports whether the macOS usbmuxd socket is present. The
// doctor calls it so the device preflight confirms the tunnel's transport
// before a run reaches the build step.
func VerifyUsbmuxdSocket() error {
if _, err := os.Stat(usbmuxdSocket); err != nil {
return fmt.Errorf("usbmuxd socket not found at %s: %w", usbmuxdSocket, err)
}
return nil
}
// usbmux message framing: a 16-byte little-endian header (length including the // usbmux message framing: a 16-byte little-endian header (length including the
// header, protocol version, payload type, request tag) precedes an XML plist. // header, protocol version, payload type, request tag) precedes an XML plist.
const ( const (