smartdust-client 1.1.0 → 1.2.0
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.
- checksums.yaml +4 -4
- data/lib/di.rb +7 -1
- data/lib/stf/interactor/connect_ios_interactor.rb +50 -0
- data/lib/stf/interactor/start_debug_session_interactor.rb +5 -3
- data/lib/stf/interactor/start_one_debug_session_interactor.rb +11 -4
- data/lib/stf/interactor/stop_debug_session_interactor.rb +5 -1
- data/lib/stf/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: aecd7f3f68308d02daca89b7dde9ac29af0f591b9b6958156f88ad8b3220e392
|
4
|
+
data.tar.gz: 12ec2efbf1d1c92858e751991b7199d4c3eab74ea2fcca89cd89146f255a8456
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c9135de81485161d76a5d7f245a363eac06f37aafa64c7df012579a41d69b3000b76fe13b86629210de374e10015f636d453221e2dece03f29873320dbb3a839
|
7
|
+
data.tar.gz: 41aa90c194c5c10f9cde3a85ee694556ccd77a74d952e2458ef8e1f4260ca41fdd35fdb2e7cb94b98017df6dc24636d405033e0f6510830632de39cf8dfc71a3
|
data/lib/di.rb
CHANGED
@@ -10,6 +10,7 @@ require 'stf/interactor/remove_all_user_devices_interactor'
|
|
10
10
|
require 'stf/interactor/get_keys_interactor'
|
11
11
|
require 'stf/interactor/get_values_interactor'
|
12
12
|
require 'stf/interactor/add_adb_public_key'
|
13
|
+
require 'stf/interactor/connect_ios_interactor'
|
13
14
|
require 'stf/validate/uri_validator'
|
14
15
|
require 'stf/model/device_enhancer'
|
15
16
|
|
@@ -70,9 +71,14 @@ class DI
|
|
70
71
|
c.register(:add_adb_public_key_interactor,
|
71
72
|
-> {Stf::AddAdbPublicKeyInteractor.new},
|
72
73
|
memoize: true)
|
74
|
+
|
73
75
|
c.register(:device_enhancer,
|
74
76
|
-> {Stf::DeviceEnhancer.new},
|
75
77
|
memoize: true)
|
78
|
+
|
79
|
+
c.register(:connect_ios,
|
80
|
+
-> {Stf::ConnectIosInteractor.new("sd_remoteios", "idevice_id")},
|
81
|
+
memoize: true)
|
76
82
|
end
|
77
83
|
|
78
84
|
def [](what)
|
@@ -83,4 +89,4 @@ class DI
|
|
83
89
|
@@container
|
84
90
|
end
|
85
91
|
end
|
86
|
-
end
|
92
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
module Stf
|
2
|
+
class ConnectIosInteractor
|
3
|
+
|
4
|
+
@@connected_ios_urls = Array.new
|
5
|
+
|
6
|
+
def initialize(sd_remote_ios_path, ideviceid_path)
|
7
|
+
@sd_remote_ios = sd_remote_ios_path
|
8
|
+
@ideviceid = ideviceid_path
|
9
|
+
end
|
10
|
+
|
11
|
+
def connect(url, serial)
|
12
|
+
if connected_ios_devices().include? serial
|
13
|
+
@@connected_ios_urls.append(url)
|
14
|
+
else
|
15
|
+
`sudo rm -rf /tmp/usbfluxd`
|
16
|
+
`sudo systemctl restart usbmuxd`
|
17
|
+
disconnect()
|
18
|
+
connected_before = connected_ios_devices().count
|
19
|
+
fork do
|
20
|
+
`sudo #{@sd_remote_ios} -c #{url} &`
|
21
|
+
end
|
22
|
+
sleep 2
|
23
|
+
if connected_ios_devices().count > connected_before
|
24
|
+
@@connected_ios_urls.append(url)
|
25
|
+
else
|
26
|
+
raise "Cannot connect to iOS device"
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
def disconnect()
|
32
|
+
`sudo pkill -f #{@sd_remote_ios}`
|
33
|
+
@@connected_ios_urls = Array.new
|
34
|
+
end
|
35
|
+
|
36
|
+
def connected_ios_urls()
|
37
|
+
return @@connected_ios_urls
|
38
|
+
end
|
39
|
+
|
40
|
+
def connected_ios_devices()
|
41
|
+
ideviceid_output = `#{@ideviceid} -l`.split("\n")
|
42
|
+
if ((ideviceid_output.select {|line| line.include? " "}).size > 0) or ideviceid_output.empty?
|
43
|
+
return Array.new
|
44
|
+
else
|
45
|
+
return ideviceid_output
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
end
|
50
|
+
end
|
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'ADB'
|
2
2
|
|
3
|
+
require 'di'
|
3
4
|
require 'stf/client'
|
4
5
|
require 'stf/log/log'
|
5
6
|
require 'stf/model/device_list'
|
7
|
+
require 'stf/interactor/connect_ios_interactor'
|
6
8
|
|
7
9
|
module Stf
|
8
10
|
class StartDebugSessionInteractor
|
@@ -94,7 +96,7 @@ module Stf
|
|
94
96
|
if all_flag
|
95
97
|
to_connect = stf_devices.size
|
96
98
|
else
|
97
|
-
connected = devices & all_devices.as_connect_url_list
|
99
|
+
connected = (devices + DI[:connect_ios].connected_ios_urls()) & all_devices.as_connect_url_list
|
98
100
|
to_connect = wanted - connected.size
|
99
101
|
end
|
100
102
|
|
@@ -117,7 +119,7 @@ module Stf
|
|
117
119
|
def count_connected_devices(filter)
|
118
120
|
stf_devices = DeviceList.new(DI[:stf].get_user_devices)
|
119
121
|
stf_devices = stf_devices.by_filter(filter) if filter
|
120
|
-
connected = devices & stf_devices.as_connect_url_list
|
122
|
+
connected = (devices + DI[:connect_ios].connected_ios_urls()) & stf_devices.as_connect_url_list
|
121
123
|
connected.size
|
122
124
|
end
|
123
125
|
|
@@ -141,7 +143,7 @@ module Stf
|
|
141
143
|
end
|
142
144
|
end
|
143
145
|
|
144
|
-
dead_persons = stf_devices.as_connect_url_list - devices
|
146
|
+
dead_persons = stf_devices.as_connect_url_list - (devices + DI[:connect_ios].connected_ios_urls())
|
145
147
|
unless dead_persons.empty?
|
146
148
|
logger.info 'will be disconnected because not present locally: ' + dead_persons.join(',')
|
147
149
|
to_disconnect += dead_persons
|
@@ -44,10 +44,17 @@ module Stf
|
|
44
44
|
end
|
45
45
|
remote_connect_tunneled_url = DI[:device_enhancer].get_tunneled_remote_connect_url(device)
|
46
46
|
logger.info remote_connect_tunneled_url
|
47
|
-
execute_adb_with 30, "connect #{remote_connect_tunneled_url}"
|
48
47
|
|
49
|
-
|
50
|
-
|
48
|
+
case device.getValue "platform"
|
49
|
+
when "Android"
|
50
|
+
execute_adb_with 30, "connect #{remote_connect_tunneled_url}"
|
51
|
+
shell('echo adbtest', {serial: "#{remote_connect_tunneled_url}"}, 30)
|
52
|
+
raise ADBError, "Could not execute shell test" unless stdout_contains "adbtest"
|
53
|
+
when "iOS"
|
54
|
+
DI[:connect_ios].connect(remote_connect_tunneled_url, device.getValue("serial"))
|
55
|
+
else
|
56
|
+
logger.error "Unrecognized device platform"
|
57
|
+
end
|
51
58
|
|
52
59
|
return true
|
53
60
|
|
@@ -73,4 +80,4 @@ module Stf
|
|
73
80
|
s.gsub(/["]/, '\"').gsub(/[ ]/, '\ ').gsub(/[=]/, '\=').gsub(/[,]/, '\,')
|
74
81
|
end
|
75
82
|
end
|
76
|
-
end
|
83
|
+
end
|
@@ -14,7 +14,11 @@ module Stf
|
|
14
14
|
device = remote_devices.find {|d| d.remoteConnect == true && DI[:device_enhancer].get_tunneled_remote_connect_url(d).eql?(remote_connect_url)}
|
15
15
|
|
16
16
|
# try to disconnect anyway
|
17
|
-
|
17
|
+
if DI[:connect_ios].connected_ios_devices.include? remote_connect_url
|
18
|
+
DI[:connect_ios].disconnect()
|
19
|
+
else
|
20
|
+
execute_adb_with 30, "disconnect #{remote_connect_url}"
|
21
|
+
end
|
18
22
|
|
19
23
|
if device.nil?
|
20
24
|
logger.error "Device #{remote_connect_url} is not available"
|
data/lib/stf/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: smartdust-client
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Smartdust
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: gli
|
@@ -229,6 +229,7 @@ files:
|
|
229
229
|
- lib/stf.rb
|
230
230
|
- lib/stf/client.rb
|
231
231
|
- lib/stf/interactor/add_adb_public_key.rb
|
232
|
+
- lib/stf/interactor/connect_ios_interactor.rb
|
232
233
|
- lib/stf/interactor/get_keys_interactor.rb
|
233
234
|
- lib/stf/interactor/get_values_interactor.rb
|
234
235
|
- lib/stf/interactor/remove_all_user_devices_interactor.rb
|