fastlane_core 0.41.3 → 0.42.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
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8756fcc16ab3e05e3429c167bfeec9f527ac2b7f
|
4
|
+
data.tar.gz: 363bab72d387aaf4555fdc69a518df68e0507e94
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7a0179679220b305704d16ad21169c4a7a974f078dc300b86e33fb1ea789caf66945116afb96603f19cefce864f484a4213195d8587228f1df1f8cd740a7afd2
|
7
|
+
data.tar.gz: 071d8d281c09e36ff9ba9135189485589b50357bae94125270d12a342c3106114ea53007b8c02a5314dec7e12e81fcdceba784ed50c9f0c56fce1968a0d7ad88
|
data/lib/fastlane_core.rb
CHANGED
@@ -16,7 +16,7 @@ require 'fastlane_core/command_executor'
|
|
16
16
|
require 'fastlane_core/ipa_upload_package_builder'
|
17
17
|
require 'fastlane_core/print_table'
|
18
18
|
require 'fastlane_core/project'
|
19
|
-
require 'fastlane_core/
|
19
|
+
require 'fastlane_core/device_manager'
|
20
20
|
require 'fastlane_core/crash_reporting/crash_reporting'
|
21
21
|
require 'fastlane_core/ui/ui'
|
22
22
|
|
@@ -14,7 +14,8 @@ module FastlaneCore
|
|
14
14
|
next if option.description.to_s.empty? # "private" options
|
15
15
|
|
16
16
|
short_switch = option.short_option
|
17
|
-
|
17
|
+
key = option.key
|
18
|
+
validate_short_switch(used_switches, short_switch, key)
|
18
19
|
|
19
20
|
type = option.data_type
|
20
21
|
|
@@ -55,7 +56,7 @@ module FastlaneCore
|
|
55
56
|
# Passing a nil value to global_option has been shown to create problems with
|
56
57
|
# option parsing!
|
57
58
|
#
|
58
|
-
# See: https://github.com/fastlane/
|
59
|
+
# See: https://github.com/fastlane/fastlane_core/pull/89
|
59
60
|
#
|
60
61
|
# If we don't have a data type for this option, we tell it to act like a String.
|
61
62
|
# This allows us to get a reasonable value for boolean options that can be
|
@@ -67,13 +68,13 @@ module FastlaneCore
|
|
67
68
|
end
|
68
69
|
end
|
69
70
|
|
70
|
-
def validate_short_switch(used_switches, short_switch)
|
71
|
+
def validate_short_switch(used_switches, short_switch, key)
|
71
72
|
return if short_switch.nil?
|
72
73
|
|
73
|
-
UI.user_error!("Short option #{short_switch} already taken for key #{
|
74
|
-
UI.user_error!("-v is already used for the version (key #{
|
75
|
-
UI.user_error!("-h is already used for the help screen (key #{
|
76
|
-
UI.user_error!("-t is already used for the trace screen (key #{
|
74
|
+
UI.user_error!("Short option #{short_switch} already taken for key #{key}") if used_switches.include?(short_switch)
|
75
|
+
UI.user_error!("-v is already used for the version (key #{key})") if short_switch == "-v"
|
76
|
+
UI.user_error!("-h is already used for the help screen (key #{key})") if short_switch == "-h"
|
77
|
+
UI.user_error!("-t is already used for the trace screen (key #{key})") if short_switch == "-t"
|
77
78
|
|
78
79
|
used_switches << short_switch
|
79
80
|
end
|
@@ -28,10 +28,6 @@ module FastlaneCore
|
|
28
28
|
UI.user_error!("Do not let descriptions end with a '.', since it's used for user inputs as well") if description[-1] == '.'
|
29
29
|
end
|
30
30
|
|
31
|
-
if type.to_s.length > 0 and short_option.to_s.length == 0
|
32
|
-
UI.user_error!("Type '#{type}' for key '#{key}' requires a short option")
|
33
|
-
end
|
34
|
-
|
35
31
|
if conflicting_options
|
36
32
|
conflicting_options.each do |conflicting_option_key|
|
37
33
|
UI.user_error!("Conflicting option key must be a symbol") unless conflicting_option_key.kind_of? Symbol
|
@@ -1,14 +1,15 @@
|
|
1
1
|
require 'open3'
|
2
|
+
require 'plist'
|
2
3
|
|
3
4
|
module FastlaneCore
|
4
|
-
class
|
5
|
+
class DeviceManager
|
5
6
|
class << self
|
6
|
-
def requested_os_type
|
7
|
-
|
7
|
+
def all(requested_os_type = "")
|
8
|
+
return connected_devices(requested_os_type) + simulators(requested_os_type)
|
8
9
|
end
|
9
10
|
|
10
|
-
def
|
11
|
-
UI.message("Fetching available devices") if $verbose
|
11
|
+
def simulators(requested_os_type = "")
|
12
|
+
UI.message("Fetching available simulator devices") if $verbose
|
12
13
|
|
13
14
|
@devices = []
|
14
15
|
os_type = 'unknown'
|
@@ -31,8 +32,8 @@ module FastlaneCore
|
|
31
32
|
# iPad 2 (0EDE6AFC-3767-425A-9658-AAA30A60F212) (Shutdown)
|
32
33
|
# iPad Air 2 (4F3B8059-03FD-4D72-99C0-6E9BBEE2A9CE) (Shutdown) (unavailable, device type profile not found)
|
33
34
|
match = line.match(/\s+([^\(]+) \(([-0-9A-F]+)\) \(([^\(]+)\)(.*unavailable.*)?/)
|
34
|
-
if match && !match[4] && os_type == requested_os_type
|
35
|
-
@devices << Device.new(name: match[1], os_version: os_version, udid: match[2], state: match[3])
|
35
|
+
if match && !match[4] && (os_type == requested_os_type || requested_os_type == "")
|
36
|
+
@devices << Device.new(name: match[1], os_version: os_version, udid: match[2], state: match[3], is_simulator: true)
|
36
37
|
end
|
37
38
|
end
|
38
39
|
end
|
@@ -40,20 +41,56 @@ module FastlaneCore
|
|
40
41
|
return @devices
|
41
42
|
end
|
42
43
|
|
43
|
-
def
|
44
|
-
|
45
|
-
end
|
44
|
+
def connected_devices(requested_os_type)
|
45
|
+
Helper.log.info "Fetching available connected devices" if $verbose
|
46
46
|
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
device_types = if requested_os_type == "tvOS"
|
48
|
+
["AppleTV"]
|
49
|
+
elsif requested_os_type == "iOS"
|
50
|
+
["iPhone", "iPad", "iPod"]
|
51
|
+
else
|
52
|
+
[]
|
53
|
+
end
|
51
54
|
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
55
|
+
devices = [] # Return early if no supported devices are being searched for
|
56
|
+
if device_types.count == 0
|
57
|
+
return devices
|
58
|
+
end
|
59
|
+
|
60
|
+
usb_devices_output = ''
|
61
|
+
Open3.popen3("system_profiler SPUSBDataType -xml") do |stdin, stdout, stderr, wait_thr|
|
62
|
+
usb_devices_output = stdout.read
|
63
|
+
end
|
64
|
+
|
65
|
+
device_uuids = []
|
66
|
+
result = Plist.parse_xml(usb_devices_output)
|
67
|
+
result[0]['_items'].each do |host_controller| # loop just incase the host system has more then 1 controller
|
68
|
+
host_controller['_items'].each do |usb_device|
|
69
|
+
is_supported_device = device_types.any? { |device_type| usb_device['_name'] == device_type }
|
70
|
+
if is_supported_device && usb_device['serial_num'].length == 40
|
71
|
+
device_uuids.push(usb_device['serial_num'])
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
if device_uuids.count > 0 # instruments takes a little while to return so skip it if we have no devices
|
77
|
+
instruments_devices_output = ''
|
78
|
+
Open3.popen3("instruments -s devices") do |stdin, stdout, stderr, wait_thr|
|
79
|
+
instruments_devices_output = stdout.read
|
80
|
+
end
|
81
|
+
|
82
|
+
instruments_devices_output.split(/\n/).each do |instruments_device|
|
83
|
+
device_uuids.each do |device_uuid|
|
84
|
+
match = instruments_device.match(/(.+) \(([0-9.]+)\) \[([0-9a-f]+)\]?/)
|
85
|
+
if match && match[3] == device_uuid
|
86
|
+
devices << Device.new(name: match[1], udid: match[3], os_version: match[2], state: "Booted", is_simulator: false)
|
87
|
+
Helper.log.info "USB Device Found - \"" + match[1] + "\" (" + match[2] + ") UUID:" + match[3] if $verbose
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
return devices
|
57
94
|
end
|
58
95
|
|
59
96
|
# The code below works from Xcode 7 on
|
@@ -104,13 +141,15 @@ module FastlaneCore
|
|
104
141
|
attr_accessor :os_version
|
105
142
|
attr_accessor :ios_version # Preserved for backwards compatibility
|
106
143
|
attr_accessor :state
|
144
|
+
attr_accessor :is_simulator
|
107
145
|
|
108
|
-
def initialize(name: nil, udid: nil, os_version: nil, state: nil)
|
146
|
+
def initialize(name: nil, udid: nil, os_version: nil, state: nil, is_simulator: nil)
|
109
147
|
self.name = name
|
110
148
|
self.udid = udid
|
111
149
|
self.os_version = os_version
|
112
150
|
self.ios_version = os_version
|
113
151
|
self.state = state
|
152
|
+
self.is_simulator = is_simulator
|
114
153
|
end
|
115
154
|
|
116
155
|
def to_s
|
@@ -126,18 +165,42 @@ module FastlaneCore
|
|
126
165
|
end
|
127
166
|
end
|
128
167
|
|
168
|
+
class Simulator
|
169
|
+
class << self
|
170
|
+
def all
|
171
|
+
return DeviceManager.simulators('iOS')
|
172
|
+
end
|
173
|
+
|
174
|
+
# Reset all simulators of this type
|
175
|
+
def reset_all
|
176
|
+
all.each(&:reset)
|
177
|
+
end
|
178
|
+
|
179
|
+
# Reset simulator by UDID or name and OS version
|
180
|
+
# Latter is useful when combined with -destination option of xcodebuild
|
181
|
+
def reset(udid: nil, name: nil, os_version: nil)
|
182
|
+
match = all.detect { |device| device.udid == udid || device.name == name && device.os_version == os_version }
|
183
|
+
match.reset if match
|
184
|
+
end
|
185
|
+
|
186
|
+
def clear_cache
|
187
|
+
@devices = nil
|
188
|
+
end
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
129
192
|
class SimulatorTV < Simulator
|
130
193
|
class << self
|
131
|
-
def
|
132
|
-
'tvOS'
|
194
|
+
def all
|
195
|
+
return DeviceManager.simulators('tvOS')
|
133
196
|
end
|
134
197
|
end
|
135
198
|
end
|
136
199
|
|
137
200
|
class SimulatorWatch < Simulator
|
138
201
|
class << self
|
139
|
-
def
|
140
|
-
'watchOS'
|
202
|
+
def all
|
203
|
+
return DeviceManager.simulators('watchOS')
|
141
204
|
end
|
142
205
|
end
|
143
206
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane_core
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.42.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-04-
|
11
|
+
date: 2016-04-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -357,6 +357,7 @@ files:
|
|
357
357
|
- lib/fastlane_core/configuration/configuration_file.rb
|
358
358
|
- lib/fastlane_core/crash_reporting/clean_stack_trace.rb
|
359
359
|
- lib/fastlane_core/crash_reporting/crash_reporting.rb
|
360
|
+
- lib/fastlane_core/device_manager.rb
|
360
361
|
- lib/fastlane_core/helper.rb
|
361
362
|
- lib/fastlane_core/ipa_file_analyser.rb
|
362
363
|
- lib/fastlane_core/ipa_upload_package_builder.rb
|
@@ -368,7 +369,6 @@ files:
|
|
368
369
|
- lib/fastlane_core/print_table.rb
|
369
370
|
- lib/fastlane_core/project.rb
|
370
371
|
- lib/fastlane_core/provisioning_profile.rb
|
371
|
-
- lib/fastlane_core/simulator.rb
|
372
372
|
- lib/fastlane_core/string_filters.rb
|
373
373
|
- lib/fastlane_core/ui/disable_colors.rb
|
374
374
|
- lib/fastlane_core/ui/fastlane_runner.rb
|
@@ -399,7 +399,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
399
399
|
version: '0'
|
400
400
|
requirements: []
|
401
401
|
rubyforge_project:
|
402
|
-
rubygems_version: 2.
|
402
|
+
rubygems_version: 2.2.2
|
403
403
|
signing_key:
|
404
404
|
specification_version: 4
|
405
405
|
summary: Contains all shared code/dependencies of the fastlane.tools
|