devicely 2.1.3 → 2.1.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/devicely.js +105 -1
- package/lib/androidDeviceDetection.js +276 -1
- package/lib/appMappings.js +337 -1
- package/lib/deviceDetection.js +394 -1
- package/lib/devices.js +54 -1
- package/lib/doctor.js +94 -1
- package/lib/executor.js +104 -1
- package/lib/logger.js +35 -1
- package/lib/scriptLoader.js +75 -0
- package/lib/server.js +3483 -1
- package/package.json +3 -12
- package/scripts/compile-shell-scripts.js +208 -0
- package/scripts/encrypt-shell-simple.js +75 -0
- package/scripts/obfuscate-shell.js +160 -0
- package/scripts/shell/android_device_control +0 -0
- package/scripts/shell/android_device_control.sh +848 -0
- package/scripts/shell/apps_presets.conf +271 -0
- package/scripts/shell/connect_android_usb +0 -0
- package/scripts/shell/connect_android_usb_multi_final +0 -0
- package/scripts/shell/connect_android_usb_multi_final.sh +289 -0
- package/scripts/shell/connect_android_wireless +0 -0
- package/scripts/shell/connect_android_wireless.sh +58 -0
- package/scripts/shell/connect_android_wireless_multi_final +0 -0
- package/scripts/shell/connect_android_wireless_multi_final.sh +476 -0
- package/scripts/shell/connect_ios_usb +0 -0
- package/scripts/shell/connect_ios_usb_multi_final +0 -0
- package/scripts/shell/connect_ios_usb_multi_final.sh +4225 -0
- package/scripts/shell/connect_ios_wireless_multi_final +0 -0
- package/scripts/shell/connect_ios_wireless_multi_final.sh +4167 -0
- package/scripts/shell/create_production_scripts +0 -0
- package/scripts/shell/create_production_scripts.sh +38 -0
- package/scripts/shell/devices.conf +24 -0
- package/scripts/shell/diagnose_wireless_ios +0 -0
- package/scripts/shell/find_element_coordinates +0 -0
- package/scripts/shell/find_wda +0 -0
- package/scripts/shell/install_uiautomator2 +0 -0
- package/scripts/shell/install_uiautomator2.sh +93 -0
- package/scripts/shell/ios_device_control +0 -0
- package/scripts/shell/ios_device_control.sh +220 -0
- package/scripts/shell/organize_project +0 -0
- package/scripts/shell/organize_project.sh +59 -0
- package/scripts/shell/pre-publish-check +0 -0
- package/scripts/shell/pre-publish-check.sh +238 -0
- package/scripts/shell/publish +0 -0
- package/scripts/shell/publish-to-npm +0 -0
- package/scripts/shell/publish-to-npm.sh +366 -0
- package/scripts/shell/publish.sh +100 -0
- package/scripts/shell/setup +0 -0
- package/scripts/shell/setup.sh +121 -0
- package/scripts/shell/setup_android +0 -0
- package/scripts/shell/start +0 -0
- package/scripts/shell/start.sh +59 -0
- package/scripts/shell/sync-to-npm-package-final +0 -0
- package/scripts/shell/sync-to-npm-package-final.sh +60 -0
- package/scripts/shell/test-local-package.sh +95 -0
- package/scripts/shell/test_android_locators +0 -0
- package/scripts/shell/test_connect +0 -0
- package/scripts/shell/test_device_detection +0 -0
- package/scripts/shell/test_fixes +0 -0
- package/scripts/shell/test_getlocators_fix +0 -0
- package/scripts/shell/test_recording_feature +0 -0
- package/scripts/shell/verify-shell-protection +0 -0
- package/scripts/shell/verify-shell-protection.sh +73 -0
- package/scripts/shell/verify_distribution +0 -0
- package/lib/package-lock.json +0 -1678
- package/lib/package.json +0 -30
- package/lib/screenshots/screenshot_ios_iPhone17_20260205_225900.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhone17_20260205_225942.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhone17_20260205_231101.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhone17_20260205_232911.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhone17_20260208_095103.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhone17_20260208_095720.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_115040.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_115047.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_115118.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_115125.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_115143.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_120107.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_120118.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_120137.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_120201.png +0 -0
- package/lib/screenshots/screenshot_ios_iPhoneXR17x_20260206_134529.png +0 -0
- package/scripts/shell/android_device_control.enc +0 -1
- package/scripts/shell/connect_android_usb_multi_final.enc +0 -1
- package/scripts/shell/connect_android_wireless.enc +0 -1
- package/scripts/shell/connect_android_wireless_multi_final.enc +0 -1
- package/scripts/shell/connect_ios_usb_multi_final.enc +0 -1
- package/scripts/shell/connect_ios_wireless_multi_final.enc +0 -1
- package/scripts/shell/ios_device_control.enc +0 -1
|
Binary file
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# This script adds QUIET mode to all shell scripts
|
|
4
|
+
# In QUIET mode, only errors and final success/failure are shown
|
|
5
|
+
|
|
6
|
+
add_quiet_mode() {
|
|
7
|
+
local script="$1"
|
|
8
|
+
echo "Processing: $script"
|
|
9
|
+
|
|
10
|
+
# Backup original
|
|
11
|
+
cp "$script" "$script.bak"
|
|
12
|
+
|
|
13
|
+
# Add QUIET mode at the beginning (after shebang)
|
|
14
|
+
sed -i '' '2i\
|
|
15
|
+
# Production mode - minimal logging\
|
|
16
|
+
QUIET_MODE="${DEVICELY_QUIET:-false}"\
|
|
17
|
+
log_info() { [ "$QUIET_MODE" != "true" ] && echo "$@"; }\
|
|
18
|
+
log_success() { echo "$@"; } # Always show success\
|
|
19
|
+
log_error() { echo "$@" >&2; } # Always show errors
|
|
20
|
+
' "$script"
|
|
21
|
+
|
|
22
|
+
# Replace echo with log_info for non-critical messages
|
|
23
|
+
# Keep ✅ and ❌ messages visible (success/error)
|
|
24
|
+
sed -i '' 's/echo "\(.*[^✅❌].*\)"/log_info "\1"/g' "$script"
|
|
25
|
+
|
|
26
|
+
echo "✓ Updated: $script"
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
# Process main scripts
|
|
30
|
+
for script in connect_ios_usb_multi_final.sh android_device_control.sh ios_device_control.sh; do
|
|
31
|
+
if [ -f "$script" ]; then
|
|
32
|
+
add_quiet_mode "$script"
|
|
33
|
+
fi
|
|
34
|
+
done
|
|
35
|
+
|
|
36
|
+
echo ""
|
|
37
|
+
echo "✅ Scripts updated with QUIET mode"
|
|
38
|
+
echo "To enable: export DEVICELY_QUIET=true"
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# Device Configuration (Auto-updated)
|
|
2
|
+
# Format: device_name,udid,ip_address,platform,type
|
|
3
|
+
# Platform: ios | android
|
|
4
|
+
# Type: usb | wireless
|
|
5
|
+
#
|
|
6
|
+
# 🔌 USB DEVICES: Automatically detected and saved here
|
|
7
|
+
# - No configuration needed for USB connection
|
|
8
|
+
# - Add IP address to enable wireless support later
|
|
9
|
+
#
|
|
10
|
+
# 📡 WIRELESS DEVICES: Manually add with IP address
|
|
11
|
+
# - Format: device_name,udid,ip_address,platform,wireless
|
|
12
|
+
# - iOS: Device must be paired in Xcode, WebDriverAgent running
|
|
13
|
+
# - Android: Enable wireless ADB first
|
|
14
|
+
#
|
|
15
|
+
# Example entries:
|
|
16
|
+
# MyiPhone,00008130-001A45C83ED8402E,,ios,usb (iOS USB - auto-detected)
|
|
17
|
+
# MyiPad,00008140-002B24361E41901C,192.168.1.100,ios,wireless (iOS Wireless)
|
|
18
|
+
# Pixel8,1A2B3C4D5E6F,,android,usb (Android USB - auto-detected)
|
|
19
|
+
# GalaxyS23,ABCD1234,192.168.1.150,android,wireless (Android Wireless)
|
|
20
|
+
|
|
21
|
+
iPhone17,00008150-001058D13478401C,,ios,usb
|
|
22
|
+
Pixel Tablet,emulator-5554,,android,usb
|
|
23
|
+
iPhone17,00008150-001058D13478401C,10.28.127.167,ios,wireless
|
|
24
|
+
2109119DI,100.84.68.240:5555,100.84.68.240,android,wireless
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
|
|
3
|
+
# Install UIAutomator2 APKs on Android device
|
|
4
|
+
|
|
5
|
+
DEVICE_ID=$1
|
|
6
|
+
|
|
7
|
+
if [ -z "$DEVICE_ID" ]; then
|
|
8
|
+
echo "Usage: $0 <device_id>"
|
|
9
|
+
echo "Example: $0 100.87.246.132:5555"
|
|
10
|
+
exit 1
|
|
11
|
+
fi
|
|
12
|
+
|
|
13
|
+
echo "🔍 Looking for UIAutomator2 APKs..."
|
|
14
|
+
|
|
15
|
+
# Find APKs
|
|
16
|
+
APK_PATH="$HOME/.appium/node_modules/appium-uiautomator2-driver/node_modules/appium-uiautomator2-server/apks"
|
|
17
|
+
|
|
18
|
+
if [ ! -d "$APK_PATH" ]; then
|
|
19
|
+
echo "❌ UIAutomator2 APKs not found!"
|
|
20
|
+
echo "Please run: appium driver install uiautomator2"
|
|
21
|
+
exit 1
|
|
22
|
+
fi
|
|
23
|
+
|
|
24
|
+
SERVER_APK=$(ls "$APK_PATH"/appium-uiautomator2-server-v*.apk 2>/dev/null | head -1)
|
|
25
|
+
TEST_APK="$APK_PATH/appium-uiautomator2-server-debug-androidTest.apk"
|
|
26
|
+
|
|
27
|
+
if [ -z "$SERVER_APK" ] || [ ! -f "$TEST_APK" ]; then
|
|
28
|
+
echo "❌ APK files not found!"
|
|
29
|
+
exit 1
|
|
30
|
+
fi
|
|
31
|
+
|
|
32
|
+
echo "✅ Found APKs:"
|
|
33
|
+
echo " Server: $SERVER_APK"
|
|
34
|
+
echo " Test: $TEST_APK"
|
|
35
|
+
echo ""
|
|
36
|
+
|
|
37
|
+
# Check if device is connected
|
|
38
|
+
adb -s "$DEVICE_ID" get-state >/dev/null 2>&1
|
|
39
|
+
if [ $? -ne 0 ]; then
|
|
40
|
+
echo "❌ Device $DEVICE_ID not connected!"
|
|
41
|
+
exit 1
|
|
42
|
+
fi
|
|
43
|
+
|
|
44
|
+
echo "📱 Device connected: $DEVICE_ID"
|
|
45
|
+
echo ""
|
|
46
|
+
echo "⚠️ IMPORTANT: On your device, you may see installation prompts."
|
|
47
|
+
echo " Please ALLOW the installation!"
|
|
48
|
+
echo ""
|
|
49
|
+
echo "📦 Installing UIAutomator2 Server..."
|
|
50
|
+
|
|
51
|
+
# Try to install with -g flag to grant all permissions
|
|
52
|
+
adb -s "$DEVICE_ID" install -r -g "$SERVER_APK"
|
|
53
|
+
if [ $? -ne 0 ]; then
|
|
54
|
+
echo ""
|
|
55
|
+
echo "⚠️ Installation failed or was canceled."
|
|
56
|
+
echo ""
|
|
57
|
+
echo "Please make sure:"
|
|
58
|
+
echo " 1. USB debugging is enabled"
|
|
59
|
+
echo " 2. 'Install via USB' is enabled in Developer Options"
|
|
60
|
+
echo " 3. You allowed the installation prompt on the device"
|
|
61
|
+
echo ""
|
|
62
|
+
echo "On Xiaomi/MIUI devices:"
|
|
63
|
+
echo " Settings → Additional Settings → Developer Options"
|
|
64
|
+
echo " → Enable 'Install via USB' AND 'USB debugging (Security settings)'"
|
|
65
|
+
echo ""
|
|
66
|
+
read -p "Press Enter to retry..."
|
|
67
|
+
adb -s "$DEVICE_ID" install -r -g "$SERVER_APK"
|
|
68
|
+
fi
|
|
69
|
+
|
|
70
|
+
echo ""
|
|
71
|
+
echo "📦 Installing UIAutomator2 Test APK..."
|
|
72
|
+
|
|
73
|
+
adb -s "$DEVICE_ID" install -r -g "$TEST_APK"
|
|
74
|
+
if [ $? -ne 0 ]; then
|
|
75
|
+
echo ""
|
|
76
|
+
echo "⚠️ Test APK installation failed."
|
|
77
|
+
read -p "Press Enter to retry..."
|
|
78
|
+
adb -s "$DEVICE_ID" install -r -g "$TEST_APK"
|
|
79
|
+
fi
|
|
80
|
+
|
|
81
|
+
echo ""
|
|
82
|
+
echo "🎉 UIAutomator2 installation complete!"
|
|
83
|
+
echo ""
|
|
84
|
+
echo "Verifying installation..."
|
|
85
|
+
adb -s "$DEVICE_ID" shell pm list packages | grep io.appium.uiautomator2
|
|
86
|
+
|
|
87
|
+
if [ $? -eq 0 ]; then
|
|
88
|
+
echo "✅ UIAutomator2 is now installed!"
|
|
89
|
+
echo "You can now use the 'getLocators' command."
|
|
90
|
+
else
|
|
91
|
+
echo "❌ Verification failed. Please try manual installation."
|
|
92
|
+
fi
|
|
93
|
+
|
|
Binary file
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# iOS Device Control - Restart/Shutdown/Status
|
|
3
|
+
# Supports both USB and Wireless devices
|
|
4
|
+
|
|
5
|
+
WDA_PORT=8100
|
|
6
|
+
|
|
7
|
+
show_usage() {
|
|
8
|
+
echo "Usage: $0 [restart|shutdown|status] [device_name|UDID]"
|
|
9
|
+
echo ""
|
|
10
|
+
echo "Commands:"
|
|
11
|
+
echo " restart - Restart the device"
|
|
12
|
+
echo " shutdown - Shutdown the device (USB only)"
|
|
13
|
+
echo " status - Show device status"
|
|
14
|
+
echo ""
|
|
15
|
+
echo "Examples:"
|
|
16
|
+
echo " $0 restart iphone16p"
|
|
17
|
+
echo " $0 status"
|
|
18
|
+
echo " $0 shutdown 00008140-001C24361E41801C"
|
|
19
|
+
exit 1
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
COMMAND=$1
|
|
23
|
+
DEVICE_ID=$2
|
|
24
|
+
|
|
25
|
+
if [ -z "$COMMAND" ]; then
|
|
26
|
+
show_usage
|
|
27
|
+
fi
|
|
28
|
+
|
|
29
|
+
# Load devices.conf
|
|
30
|
+
SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|
31
|
+
DEVICES_CONF="$SCRIPT_DIR/devices.conf"
|
|
32
|
+
|
|
33
|
+
# Find device info
|
|
34
|
+
find_device() {
|
|
35
|
+
local search_term=$1
|
|
36
|
+
|
|
37
|
+
# Check USB devices first
|
|
38
|
+
if command -v idevice_id >/dev/null 2>&1; then
|
|
39
|
+
USB_UDIDS=($(idevice_id -l 2>/dev/null))
|
|
40
|
+
for udid in "${USB_UDIDS[@]}"; do
|
|
41
|
+
if [[ "$udid" == "$search_term"* ]] || [ -z "$search_term" ]; then
|
|
42
|
+
echo "usb|$udid|local"
|
|
43
|
+
return 0
|
|
44
|
+
fi
|
|
45
|
+
# Get device name
|
|
46
|
+
DEV_NAME=$(ideviceinfo -u "$udid" -k DeviceName 2>/dev/null | tr -d '\n')
|
|
47
|
+
if [ "$DEV_NAME" == "$search_term" ]; then
|
|
48
|
+
echo "usb|$udid|local"
|
|
49
|
+
return 0
|
|
50
|
+
fi
|
|
51
|
+
done
|
|
52
|
+
fi
|
|
53
|
+
|
|
54
|
+
# Check wireless devices from config
|
|
55
|
+
if [ -f "$DEVICES_CONF" ]; then
|
|
56
|
+
while IFS=',' read -r name udid ip || [ -n "$name" ]; do
|
|
57
|
+
# Skip comments and empty lines
|
|
58
|
+
[[ "$name" =~ ^#.*$ ]] && continue
|
|
59
|
+
[ -z "$name" ] && continue
|
|
60
|
+
|
|
61
|
+
# Trim whitespace
|
|
62
|
+
name=$(echo "$name" | xargs)
|
|
63
|
+
udid=$(echo "$udid" | xargs)
|
|
64
|
+
ip=$(echo "$ip" | xargs)
|
|
65
|
+
|
|
66
|
+
if [ "$name" == "$search_term" ] || [ "$udid" == "$search_term" ] || [ -z "$search_term" ]; then
|
|
67
|
+
echo "wireless|$udid|$ip"
|
|
68
|
+
return 0
|
|
69
|
+
fi
|
|
70
|
+
done < "$DEVICES_CONF"
|
|
71
|
+
fi
|
|
72
|
+
|
|
73
|
+
echo "not_found||"
|
|
74
|
+
return 1
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
restart_device() {
|
|
78
|
+
local device_info=$(find_device "$DEVICE_ID")
|
|
79
|
+
IFS='|' read -r dev_type udid ip <<< "$device_info"
|
|
80
|
+
|
|
81
|
+
if [ "$dev_type" == "not_found" ]; then
|
|
82
|
+
echo "❌ Device not found: $DEVICE_ID"
|
|
83
|
+
exit 1
|
|
84
|
+
fi
|
|
85
|
+
|
|
86
|
+
echo "🔄 Restarting device: $DEVICE_ID"
|
|
87
|
+
|
|
88
|
+
if [ "$dev_type" == "usb" ]; then
|
|
89
|
+
echo "→ Using USB restart methods..."
|
|
90
|
+
|
|
91
|
+
# Try idevicediagnostics first
|
|
92
|
+
if command -v idevicediagnostics >/dev/null 2>&1; then
|
|
93
|
+
if idevicediagnostics -u "$udid" restart 2>/dev/null; then
|
|
94
|
+
echo "✅ Device restart initiated (idevicediagnostics)"
|
|
95
|
+
return 0
|
|
96
|
+
fi
|
|
97
|
+
fi
|
|
98
|
+
|
|
99
|
+
# Try devicectl (Xcode)
|
|
100
|
+
if command -v xcrun >/dev/null 2>&1; then
|
|
101
|
+
DC_OUT=$(xcrun devicectl device reboot --device "$udid" 2>&1)
|
|
102
|
+
if echo "$DC_OUT" | grep -qi "restart\|reboot\|success" || [ $? -eq 0 ]; then
|
|
103
|
+
echo "✅ Device restart initiated (devicectl)"
|
|
104
|
+
return 0
|
|
105
|
+
fi
|
|
106
|
+
fi
|
|
107
|
+
|
|
108
|
+
echo "❌ All restart methods failed"
|
|
109
|
+
return 1
|
|
110
|
+
else
|
|
111
|
+
# Wireless - use WDA
|
|
112
|
+
echo "→ Using WDA restart (wireless)..."
|
|
113
|
+
R=$(curl -s -X POST "http://${ip}:${WDA_PORT}/wda/device/restart" \
|
|
114
|
+
-H 'Content-Type: application/json' -d '{}' -m 10)
|
|
115
|
+
|
|
116
|
+
if echo "$R" | grep -q '"value"'; then
|
|
117
|
+
echo "✅ Device restart initiated (WDA)"
|
|
118
|
+
return 0
|
|
119
|
+
else
|
|
120
|
+
echo "❌ WDA restart failed"
|
|
121
|
+
return 1
|
|
122
|
+
fi
|
|
123
|
+
fi
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
shutdown_device() {
|
|
127
|
+
local device_info=$(find_device "$DEVICE_ID")
|
|
128
|
+
IFS='|' read -r dev_type udid ip <<< "$device_info"
|
|
129
|
+
|
|
130
|
+
if [ "$dev_type" == "not_found" ]; then
|
|
131
|
+
echo "❌ Device not found: $DEVICE_ID"
|
|
132
|
+
exit 1
|
|
133
|
+
fi
|
|
134
|
+
|
|
135
|
+
if [ "$dev_type" != "usb" ]; then
|
|
136
|
+
echo "❌ Shutdown only supported for USB devices"
|
|
137
|
+
echo " Use 'restart' command for wireless devices"
|
|
138
|
+
exit 1
|
|
139
|
+
fi
|
|
140
|
+
|
|
141
|
+
echo "⚠️ Shutting down device: $DEVICE_ID"
|
|
142
|
+
echo " This will power off the device completely"
|
|
143
|
+
|
|
144
|
+
if command -v idevicediagnostics >/dev/null 2>&1; then
|
|
145
|
+
if idevicediagnostics -u "$udid" shutdown 2>/dev/null; then
|
|
146
|
+
echo "✅ Device shutdown initiated"
|
|
147
|
+
return 0
|
|
148
|
+
fi
|
|
149
|
+
fi
|
|
150
|
+
|
|
151
|
+
echo "❌ Shutdown failed - libimobiledevice not available"
|
|
152
|
+
return 1
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
show_status() {
|
|
156
|
+
echo "📱 Device Status"
|
|
157
|
+
echo ""
|
|
158
|
+
|
|
159
|
+
# USB Devices
|
|
160
|
+
if command -v idevice_id >/dev/null 2>&1; then
|
|
161
|
+
USB_UDIDS=($(idevice_id -l 2>/dev/null))
|
|
162
|
+
if [ ${#USB_UDIDS[@]} -gt 0 ]; then
|
|
163
|
+
echo "USB Devices:"
|
|
164
|
+
for udid in "${USB_UDIDS[@]}"; do
|
|
165
|
+
DEV_NAME=$(ideviceinfo -u "$udid" -k DeviceName 2>/dev/null)
|
|
166
|
+
DEV_VERSION=$(ideviceinfo -u "$udid" -k ProductVersion 2>/dev/null)
|
|
167
|
+
echo " 🔌 $DEV_NAME"
|
|
168
|
+
echo " UDID: $udid"
|
|
169
|
+
echo " iOS: $DEV_VERSION"
|
|
170
|
+
echo ""
|
|
171
|
+
done
|
|
172
|
+
else
|
|
173
|
+
echo "USB Devices: None"
|
|
174
|
+
echo ""
|
|
175
|
+
fi
|
|
176
|
+
else
|
|
177
|
+
echo "⚠️ libimobiledevice not installed (USB detection disabled)"
|
|
178
|
+
echo " Install: brew install libimobiledevice"
|
|
179
|
+
echo ""
|
|
180
|
+
fi
|
|
181
|
+
|
|
182
|
+
# Wireless Devices
|
|
183
|
+
if [ -f "$DEVICES_CONF" ]; then
|
|
184
|
+
echo "Wireless Devices (from config):"
|
|
185
|
+
while IFS=',' read -r name udid ip || [ -n "$name" ]; do
|
|
186
|
+
[[ "$name" =~ ^#.*$ ]] && continue
|
|
187
|
+
[ -z "$name" ] && continue
|
|
188
|
+
|
|
189
|
+
name=$(echo "$name" | xargs)
|
|
190
|
+
ip=$(echo "$ip" | xargs)
|
|
191
|
+
|
|
192
|
+
# Check connectivity
|
|
193
|
+
if curl -s --connect-timeout 2 "http://${ip}:${WDA_PORT}/status" | grep -q '"state"'; then
|
|
194
|
+
echo " 📡 $name ✅ Online"
|
|
195
|
+
else
|
|
196
|
+
echo " 📡 $name ⚠️ Offline"
|
|
197
|
+
fi
|
|
198
|
+
echo " IP: $ip"
|
|
199
|
+
echo ""
|
|
200
|
+
done < "$DEVICES_CONF"
|
|
201
|
+
else
|
|
202
|
+
echo "No devices.conf found"
|
|
203
|
+
fi
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
case "$COMMAND" in
|
|
207
|
+
restart|reboot)
|
|
208
|
+
restart_device
|
|
209
|
+
;;
|
|
210
|
+
shutdown|poweroff)
|
|
211
|
+
shutdown_device
|
|
212
|
+
;;
|
|
213
|
+
status)
|
|
214
|
+
show_status
|
|
215
|
+
;;
|
|
216
|
+
*)
|
|
217
|
+
echo "❌ Unknown command: $COMMAND"
|
|
218
|
+
show_usage
|
|
219
|
+
;;
|
|
220
|
+
esac
|
|
Binary file
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
#!/bin/bash
|
|
2
|
+
# Project Organization Script
|
|
3
|
+
|
|
4
|
+
echo "📁 Organizing Devicely Project Structure..."
|
|
5
|
+
echo ""
|
|
6
|
+
|
|
7
|
+
# Create directory structure
|
|
8
|
+
mkdir -p docs/fixes
|
|
9
|
+
mkdir -p docs/guides
|
|
10
|
+
mkdir -p scripts/utilities
|
|
11
|
+
mkdir -p scripts/testing
|
|
12
|
+
mkdir -p .archive
|
|
13
|
+
|
|
14
|
+
# Move documentation files
|
|
15
|
+
echo "📄 Organizing documentation..."
|
|
16
|
+
mv *_FIX*.md docs/fixes/ 2>/dev/null
|
|
17
|
+
mv *_FIXES.md docs/fixes/ 2>/dev/null
|
|
18
|
+
mv AI_*.md docs/fixes/ 2>/dev/null
|
|
19
|
+
mv IMPLEMENTATION*.md docs/fixes/ 2>/dev/null
|
|
20
|
+
mv FINAL_*.md docs/fixes/ 2>/dev/null
|
|
21
|
+
|
|
22
|
+
mv *_GUIDE*.md docs/guides/ 2>/dev/null
|
|
23
|
+
mv TROUBLESHOOTING.md docs/guides/ 2>/dev/null
|
|
24
|
+
mv HOW_TO_*.md docs/guides/ 2>/dev/null
|
|
25
|
+
|
|
26
|
+
# Move test scripts
|
|
27
|
+
echo "🧪 Organizing test scripts..."
|
|
28
|
+
mv test_*.sh scripts/testing/ 2>/dev/null
|
|
29
|
+
mv test_*.js scripts/testing/ 2>/dev/null
|
|
30
|
+
mv validate-*.js scripts/testing/ 2>/dev/null
|
|
31
|
+
|
|
32
|
+
# Move utility scripts
|
|
33
|
+
echo "🔧 Organizing utility scripts..."
|
|
34
|
+
mv clean_*.sh scripts/utilities/ 2>/dev/null
|
|
35
|
+
mv clean_*.js scripts/utilities/ 2>/dev/null
|
|
36
|
+
mv find_*.sh scripts/utilities/ 2>/dev/null
|
|
37
|
+
mv diagnose_*.sh scripts/utilities/ 2>/dev/null
|
|
38
|
+
mv verify_*.sh scripts/utilities/ 2>/dev/null
|
|
39
|
+
|
|
40
|
+
# Move old/obsolete files to archive
|
|
41
|
+
echo "📦 Archiving obsolete files..."
|
|
42
|
+
mv connect_android_usb.sh .archive/ 2>/dev/null
|
|
43
|
+
mv connect_ios_usb.sh .archive/ 2>/dev/null
|
|
44
|
+
mv setup_android.sh .archive/ 2>/dev/null
|
|
45
|
+
|
|
46
|
+
# Keep important files in root
|
|
47
|
+
echo "✅ Keeping in root:"
|
|
48
|
+
echo " - README.md"
|
|
49
|
+
echo " - start.sh"
|
|
50
|
+
echo " - setup.sh"
|
|
51
|
+
echo " - devices.conf"
|
|
52
|
+
echo " - apps_presets.conf"
|
|
53
|
+
echo " - Core control scripts"
|
|
54
|
+
|
|
55
|
+
echo ""
|
|
56
|
+
echo "✅ Project organized!"
|
|
57
|
+
echo ""
|
|
58
|
+
echo "📊 New structure:"
|
|
59
|
+
tree -L 2 -d . 2>/dev/null || ls -la
|
|
Binary file
|