fastlane 2.54.0.beta.20170822010003 → 2.54.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/deliver/lib/deliver/loader.rb +29 -3
- data/deliver/lib/deliver/upload_metadata.rb +18 -0
- data/fastlane/lib/fastlane/actions/opt_out_crash_reporting.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/fastlane_core/lib/fastlane_core/crash_reporter/crash_reporter.rb +1 -1
- data/fastlane_core/lib/fastlane_core/device_manager.rb +12 -12
- data/fastlane_core/lib/fastlane_core/test_parser.rb +145 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/pilot/lib/pilot/tester_manager.rb +8 -1
- data/sigh/lib/sigh/runner.rb +27 -18
- data/snapshot/README.md +3 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +57 -35
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +173 -0
- data/snapshot/lib/snapshot.rb +6 -0
- data/snapshot/lib/snapshot/collector.rb +37 -11
- data/snapshot/lib/snapshot/detect_values.rb +4 -1
- data/snapshot/lib/snapshot/fixes/simulator_zoom_fix.rb +1 -1
- data/snapshot/lib/snapshot/options.rb +5 -0
- data/snapshot/lib/snapshot/reports_generator.rb +34 -3
- data/snapshot/lib/snapshot/runner.rb +30 -215
- data/snapshot/lib/snapshot/setup.rb +9 -3
- data/snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb +53 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb +203 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +129 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_xcode_8.rb +110 -0
- data/snapshot/lib/snapshot/test_command_generator.rb +39 -107
- data/snapshot/lib/snapshot/test_command_generator_base.rb +94 -0
- data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +65 -0
- data/snapshot/lib/snapshot/update.rb +4 -2
- data/spaceship/lib/spaceship/portal/provisioning_profile.rb +5 -2
- data/spaceship/lib/spaceship/test_flight/client.rb +8 -0
- data/spaceship/lib/spaceship/test_flight/tester.rb +20 -4
- metadata +26 -17
@@ -1,133 +1,65 @@
|
|
1
|
+
require 'snapshot/test_command_generator_base'
|
2
|
+
|
1
3
|
module Snapshot
|
2
4
|
# Responsible for building the fully working xcodebuild command
|
3
|
-
|
5
|
+
# Xcode 9 introduced the ability to run tests in parallel on multiple simulators
|
6
|
+
# This TestCommandGenerator constructs the appropriate `xcodebuild` command
|
7
|
+
# to be used for executing simultaneous tests
|
8
|
+
class TestCommandGenerator < TestCommandGeneratorBase
|
4
9
|
class << self
|
5
|
-
def generate(
|
10
|
+
def generate(devices: nil, language: nil, locale: nil, log_path: nil)
|
6
11
|
parts = prefix
|
7
12
|
parts << "xcodebuild"
|
8
13
|
parts += options
|
9
|
-
parts += destination(
|
14
|
+
parts += destination(devices)
|
10
15
|
parts += build_settings
|
11
16
|
parts += actions
|
12
17
|
parts += suffix
|
13
|
-
parts += pipe(
|
14
|
-
|
15
|
-
parts
|
16
|
-
end
|
17
|
-
|
18
|
-
def prefix
|
19
|
-
["set -o pipefail &&"]
|
20
|
-
end
|
21
|
-
|
22
|
-
# Path to the project or workspace as parameter
|
23
|
-
# This will also include the scheme (if given)
|
24
|
-
# @return [Array] The array with all the components to join
|
25
|
-
def project_path_array
|
26
|
-
proj = Snapshot.project.xcodebuild_parameters
|
27
|
-
return proj if proj.count > 0
|
28
|
-
UI.user_error!("No project/workspace found")
|
29
|
-
end
|
30
|
-
|
31
|
-
def options
|
32
|
-
config = Snapshot.config
|
33
|
-
|
34
|
-
options = []
|
35
|
-
options += project_path_array
|
36
|
-
options << "-sdk '#{config[:sdk]}'" if config[:sdk]
|
37
|
-
options << "-derivedDataPath '#{derived_data_path}'"
|
38
|
-
options << config[:xcargs] if config[:xcargs]
|
39
|
-
options
|
40
|
-
end
|
41
|
-
|
42
|
-
def build_settings
|
43
|
-
config = Snapshot.config
|
44
|
-
|
45
|
-
build_settings = []
|
46
|
-
build_settings << "FASTLANE_SNAPSHOT=YES"
|
47
|
-
build_settings << "TEST_TARGET_NAME=#{config[:test_target_name].shellescape}" if config[:test_target_name]
|
48
|
-
|
49
|
-
build_settings
|
50
|
-
end
|
51
|
-
|
52
|
-
def actions
|
53
|
-
actions = []
|
54
|
-
actions << :clean if Snapshot.config[:clean]
|
55
|
-
actions << :build # https://github.com/fastlane/snapshot/issues/246
|
56
|
-
actions << :test
|
18
|
+
parts += pipe(language: language, locale: locale, log_path: log_path)
|
57
19
|
|
58
|
-
|
20
|
+
return parts
|
59
21
|
end
|
60
22
|
|
61
|
-
def
|
62
|
-
[]
|
23
|
+
def pipe(language: nil, locale: nil, log_path: nil)
|
24
|
+
tee_command = ['tee']
|
25
|
+
tee_command << '-a' if log_path && File.exist?(log_path)
|
26
|
+
tee_command << log_path.shellescape if log_path
|
27
|
+
return ["| #{tee_command.join(' ')} | xcpretty #{Snapshot.config[:xcpretty_args]}"]
|
63
28
|
end
|
64
29
|
|
65
|
-
def
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
def find_device(device_name, os_version = Snapshot.config[:ios_version])
|
71
|
-
# We might get this error message
|
72
|
-
# > The requested device could not be found because multiple devices matched the request.
|
73
|
-
#
|
74
|
-
# This happens when you have multiple simulators for a given device type / iOS combination
|
75
|
-
# { platform:iOS Simulator, id:1685B071-AFB2-4DC1-BE29-8370BA4A6EBD, OS:9.0, name:iPhone 5 }
|
76
|
-
# { platform:iOS Simulator, id:A141F23B-96B3-491A-8949-813B376C28A7, OS:9.0, name:iPhone 5 }
|
77
|
-
#
|
78
|
-
simulators = FastlaneCore::DeviceManager.simulators
|
79
|
-
# Sort devices with matching names by OS version, largest first, so that we can
|
80
|
-
# pick the device with the newest OS in case an exact OS match is not available
|
81
|
-
name_matches = simulators.find_all { |sim| sim.name.strip == device_name.strip }
|
82
|
-
.sort_by { |sim| Gem::Version.new(sim.os_version) }
|
83
|
-
.reverse
|
84
|
-
name_matches.find { |sim| sim.os_version == os_version } || name_matches.first
|
85
|
-
end
|
86
|
-
|
87
|
-
def device_udid(device_name, os_version = Snapshot.config[:ios_version])
|
88
|
-
device = find_device(device_name, os_version)
|
89
|
-
|
90
|
-
device ? device.udid : nil
|
91
|
-
end
|
92
|
-
|
93
|
-
def destination(device_name)
|
30
|
+
def destination(devices)
|
31
|
+
unless verify_devices_share_os(devices)
|
32
|
+
UI.user_error!('All devices provided to snapshot should run the same operating system')
|
33
|
+
end
|
94
34
|
# on Mac we will always run on host machine, so should specify only platform
|
95
|
-
return ["-destination 'platform=macOS'"] if
|
35
|
+
return ["-destination 'platform=macOS'"] if devices.first.to_s =~ /^Mac/
|
36
|
+
|
37
|
+
os = devices.first.to_s =~ /^Apple TV/ ? "tvOS" : "iOS"
|
96
38
|
|
97
|
-
os = device_name =~ /^Apple TV/ ? "tvOS" : "iOS"
|
98
39
|
os_version = Snapshot.config[:ios_version] || Snapshot::LatestOsVersion.version(os)
|
99
40
|
|
100
|
-
|
101
|
-
|
102
|
-
UI.user_error!("No device found named '#{
|
103
|
-
|
104
|
-
elsif device.os_version != os_version
|
105
|
-
UI.important("Using device named '#{device_name}' with version '#{device.os_version}' because no match was found for version '#{os_version}'")
|
41
|
+
destinations = devices.map do |d|
|
42
|
+
device = find_device(d, os_version)
|
43
|
+
UI.user_error!("No device found named '#{d}' for version '#{os_version}'") if device.nil?
|
44
|
+
"-destination 'platform=#{os} Simulator,name=#{device.name},OS=#{os_version}'"
|
106
45
|
end
|
107
|
-
value = "platform=#{os} Simulator,id=#{device.udid},OS=#{os_version}"
|
108
46
|
|
109
|
-
return [
|
47
|
+
return [destinations.join(' ')]
|
110
48
|
end
|
111
49
|
|
112
|
-
def
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
name_components << language if language
|
118
|
-
name_components << locale if locale
|
50
|
+
def verify_devices_share_os(devices)
|
51
|
+
# Check each device to see if it is an iOS device
|
52
|
+
all_ios = devices.map do |device|
|
53
|
+
device = device.downcase
|
54
|
+
device.start_with?('iphone', 'ipad')
|
119
55
|
end
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
return
|
127
|
-
end
|
128
|
-
|
129
|
-
def derived_data_path
|
130
|
-
Snapshot.cache[:derived_data_path] ||= (Snapshot.config[:derived_data_path] || Dir.mktmpdir("snapshot_derived"))
|
56
|
+
# Return true if all devices are iOS devices
|
57
|
+
return true unless all_ios.include?(false)
|
58
|
+
# There should only be more than 1 device type if
|
59
|
+
# it is iOS, therefore, if there is more than 1
|
60
|
+
# device in the array, and they are not all iOS
|
61
|
+
# as checked above, that would imply that this is a mixed bag
|
62
|
+
return devices.count == 1
|
131
63
|
end
|
132
64
|
end
|
133
65
|
end
|
@@ -0,0 +1,94 @@
|
|
1
|
+
module Snapshot
|
2
|
+
class TestCommandGeneratorBase
|
3
|
+
class << self
|
4
|
+
def prefix
|
5
|
+
["set -o pipefail &&"]
|
6
|
+
end
|
7
|
+
|
8
|
+
# Path to the project or workspace as parameter
|
9
|
+
# This will also include the scheme (if given)
|
10
|
+
# @return [Array] The array with all the components to join
|
11
|
+
def project_path_array
|
12
|
+
proj = Snapshot.project.xcodebuild_parameters
|
13
|
+
return proj if proj.count > 0
|
14
|
+
UI.user_error!("No project/workspace found")
|
15
|
+
end
|
16
|
+
|
17
|
+
def options
|
18
|
+
config = Snapshot.config
|
19
|
+
options = []
|
20
|
+
options += project_path_array
|
21
|
+
options << "-sdk '#{config[:sdk]}'" if config[:sdk]
|
22
|
+
options << "-derivedDataPath '#{derived_data_path}'"
|
23
|
+
options << config[:xcargs] if config[:xcargs]
|
24
|
+
return options
|
25
|
+
end
|
26
|
+
|
27
|
+
def build_settings
|
28
|
+
config = Snapshot.config
|
29
|
+
|
30
|
+
build_settings = []
|
31
|
+
build_settings << "FASTLANE_SNAPSHOT=YES"
|
32
|
+
build_settings << "TEST_TARGET_NAME=#{config[:test_target_name].shellescape}" if config[:test_target_name]
|
33
|
+
|
34
|
+
return build_settings
|
35
|
+
end
|
36
|
+
|
37
|
+
def actions
|
38
|
+
actions = []
|
39
|
+
actions << :clean if Snapshot.config[:clean]
|
40
|
+
actions << :build # https://github.com/fastlane/snapshot/issues/246
|
41
|
+
actions << :test
|
42
|
+
|
43
|
+
return actions
|
44
|
+
end
|
45
|
+
|
46
|
+
def suffix
|
47
|
+
return []
|
48
|
+
end
|
49
|
+
|
50
|
+
def find_device(device_name, os_version = Snapshot.config[:ios_version])
|
51
|
+
# We might get this error message
|
52
|
+
# > The requested device could not be found because multiple devices matched the request.
|
53
|
+
#
|
54
|
+
# This happens when you have multiple simulators for a given device type / iOS combination
|
55
|
+
# { platform:iOS Simulator, id:1685B071-AFB2-4DC1-BE29-8370BA4A6EBD, OS:9.0, name:iPhone 5 }
|
56
|
+
# { platform:iOS Simulator, id:A141F23B-96B3-491A-8949-813B376C28A7, OS:9.0, name:iPhone 5 }
|
57
|
+
#
|
58
|
+
simulators = FastlaneCore::DeviceManager.simulators
|
59
|
+
# Sort devices with matching names by OS version, largest first, so that we can
|
60
|
+
# pick the device with the newest OS in case an exact OS match is not available
|
61
|
+
name_matches = simulators.find_all { |sim| sim.name.strip == device_name.strip }
|
62
|
+
.sort_by { |sim| Gem::Version.new(sim.os_version) }
|
63
|
+
.reverse
|
64
|
+
return name_matches.find { |sim| sim.os_version == os_version } || name_matches.first
|
65
|
+
end
|
66
|
+
|
67
|
+
def device_udid(device_name, os_version = Snapshot.config[:ios_version])
|
68
|
+
device = find_device(device_name, os_version)
|
69
|
+
|
70
|
+
return device ? device.udid : nil
|
71
|
+
end
|
72
|
+
|
73
|
+
def derived_data_path
|
74
|
+
Snapshot.cache[:derived_data_path] ||= (Snapshot.config[:derived_data_path] || Dir.mktmpdir("snapshot_derived"))
|
75
|
+
end
|
76
|
+
|
77
|
+
def initialize
|
78
|
+
not_implemented(__method__)
|
79
|
+
end
|
80
|
+
|
81
|
+
def pipe(device_type, language, locale)
|
82
|
+
not_implemented(__method__)
|
83
|
+
end
|
84
|
+
|
85
|
+
def destination(device_name)
|
86
|
+
not_implemented(__method__)
|
87
|
+
end
|
88
|
+
|
89
|
+
def xcodebuild_log_path(device_type: nil, language: nil, locale: nil)
|
90
|
+
not_implemented(__method__)
|
91
|
+
end
|
92
|
+
end
|
93
|
+
end
|
94
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require 'snapshot/test_command_generator_base'
|
2
|
+
|
3
|
+
module Snapshot
|
4
|
+
# Responsible for building the fully working xcodebuild command
|
5
|
+
# This TestCommandGenerator supports Xcode 8's `xcodebuild` requirements
|
6
|
+
# It is its own object, as the logic differs for how we want to handle
|
7
|
+
# creating `xcodebuild` commands for Xcode 9 (see test_command_generator.rb)
|
8
|
+
class TestCommandGeneratorXcode8 < TestCommandGeneratorBase
|
9
|
+
class << self
|
10
|
+
def generate(device_type: nil, language: nil, locale: nil)
|
11
|
+
parts = prefix
|
12
|
+
parts << "xcodebuild"
|
13
|
+
parts += options
|
14
|
+
parts += destination(device_type)
|
15
|
+
parts += build_settings
|
16
|
+
parts += actions
|
17
|
+
parts += suffix
|
18
|
+
parts += pipe(device_type, language, locale)
|
19
|
+
|
20
|
+
return parts
|
21
|
+
end
|
22
|
+
|
23
|
+
def pipe(device_type, language, locale)
|
24
|
+
log_path = xcodebuild_log_path(device_type: device_type, language: language, locale: locale)
|
25
|
+
return ["| tee #{log_path.shellescape} | xcpretty #{Snapshot.config[:xcpretty_args]}"]
|
26
|
+
end
|
27
|
+
|
28
|
+
def destination(device_name)
|
29
|
+
# on Mac we will always run on host machine, so should specify only platform
|
30
|
+
return ["-destination 'platform=macOS'"] if device_name =~ /^Mac/
|
31
|
+
|
32
|
+
# if device_name is nil, use the config and get all devices
|
33
|
+
os = device_name =~ /^Apple TV/ ? "tvOS" : "iOS"
|
34
|
+
os_version = Snapshot.config[:ios_version] || Snapshot::LatestOsVersion.version(os)
|
35
|
+
|
36
|
+
device = find_device(device_name, os_version)
|
37
|
+
if device.nil?
|
38
|
+
UI.user_error!("No device found named '#{device_name}' for version '#{os_version}'")
|
39
|
+
elsif device.os_version != os_version
|
40
|
+
UI.important("Using device named '#{device_name}' with version '#{device.os_version}' because no match was found for version '#{os_version}'")
|
41
|
+
end
|
42
|
+
value = "platform=#{os} Simulator,id=#{device.udid},OS=#{os_version}"
|
43
|
+
|
44
|
+
return ["-destination '#{value}'"]
|
45
|
+
end
|
46
|
+
|
47
|
+
def xcodebuild_log_path(device_type: nil, language: nil, locale: nil)
|
48
|
+
name_components = [Snapshot.project.app_name, Snapshot.config[:scheme]]
|
49
|
+
|
50
|
+
if Snapshot.config[:namespace_log_files]
|
51
|
+
name_components << device_type if device_type
|
52
|
+
name_components << language if language
|
53
|
+
name_components << locale if locale
|
54
|
+
end
|
55
|
+
|
56
|
+
file_name = "#{name_components.join('-')}.log"
|
57
|
+
|
58
|
+
containing = File.expand_path(Snapshot.config[:buildlog_path])
|
59
|
+
FileUtils.mkdir_p(containing)
|
60
|
+
|
61
|
+
return File.join(containing, file_name)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -3,11 +3,12 @@ module Snapshot
|
|
3
3
|
class Update
|
4
4
|
# @return [Array] A list of helper files (usually just one)
|
5
5
|
def self.find_helper
|
6
|
-
Dir["./**/SnapshotHelper.swift"]
|
6
|
+
Dir["./**/SnapshotHelper.swift"] + Dir["./**/SnapshotHelperXcode8.swift"]
|
7
7
|
end
|
8
8
|
|
9
9
|
def update
|
10
10
|
paths = self.class.find_helper
|
11
|
+
UI.user_error!("Couldn't find any SnapshotHelper files in current directory") if paths.count == 0
|
11
12
|
|
12
13
|
UI.message "Found the following SnapshotHelper:"
|
13
14
|
paths.each { |p| UI.message "\t#{p}" }
|
@@ -20,7 +21,8 @@ module Snapshot
|
|
20
21
|
|
21
22
|
paths.each do |path|
|
22
23
|
UI.message "Updating '#{path}'..."
|
23
|
-
|
24
|
+
input_path = Snapshot::Runner.path_to_helper_file_from_gem
|
25
|
+
File.write(path, File.read(input_path))
|
24
26
|
end
|
25
27
|
|
26
28
|
UI.success "Successfully updated helper files"
|
@@ -316,9 +316,12 @@ module Spaceship
|
|
316
316
|
# profiles matching the bundle identifier
|
317
317
|
# Returns [] if no profiles were found
|
318
318
|
# This may also contain invalid or expired profiles
|
319
|
-
def find_by_bundle_id(bundle_id, mac: false)
|
319
|
+
def find_by_bundle_id(bundle_id: nil, mac: false, sub_platform: nil)
|
320
|
+
raise "Missing required parameter 'bundle_id'" if bundle_id.to_s.empty?
|
321
|
+
raise "Invalid sub_platform #{sub_platform}, valid values are tvOS" if !sub_platform.nil? and sub_platform != 'tvOS'
|
322
|
+
find_tvos_profiles = sub_platform == 'tvOS'
|
320
323
|
all(mac: mac).find_all do |profile|
|
321
|
-
profile.app.bundle_id == bundle_id
|
324
|
+
profile.app.bundle_id == bundle_id && profile.tvos? == find_tvos_profiles
|
322
325
|
end
|
323
326
|
end
|
324
327
|
end
|
@@ -112,6 +112,14 @@ module Spaceship::TestFlight
|
|
112
112
|
handle_response(response)
|
113
113
|
end
|
114
114
|
|
115
|
+
def search_for_tester_in_app(app_id: nil, text: nil)
|
116
|
+
assert_required_params(__method__, binding)
|
117
|
+
text = CGI.escape(text)
|
118
|
+
url = "providers/#{team_id}/apps/#{app_id}/testers?order=asc&search=#{text}&sort=status"
|
119
|
+
response = request(:get, url)
|
120
|
+
handle_response(response)
|
121
|
+
end
|
122
|
+
|
115
123
|
def resend_invite_to_external_tester(app_id: nil, tester_id: nil)
|
116
124
|
assert_required_params(__method__, binding)
|
117
125
|
url = "/testflight/v1/invites/#{app_id}/resend?testerId=#{tester_id}"
|
@@ -20,11 +20,27 @@ module Spaceship::TestFlight
|
|
20
20
|
client.testers_for_app(app_id: app_id).map { |data| self.new(data) }
|
21
21
|
end
|
22
22
|
|
23
|
-
#
|
24
|
-
# as either the Tester id or email
|
25
|
-
# @param email (String) (required): Value used to filter the tester, case insensitive
|
23
|
+
# *DEPRECATED: Use `Spaceship::TestFlight::Tester.search` method instead*
|
26
24
|
def self.find(app_id: nil, email: nil)
|
27
|
-
self.
|
25
|
+
testers = self.search(app_id: app_id, text: email, is_email_exact_match: true)
|
26
|
+
return testers.first
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return (Spaceship::TestFlight::Tester) Returns the testers matching the parameter.
|
30
|
+
# ITC searchs all fields, and is full text. The search results are the union of all words in the search text
|
31
|
+
# @param text (String) (required): Value used to filter the tester, case insensitive
|
32
|
+
def self.search(app_id: nil, text: nil, is_email_exact_match: false)
|
33
|
+
text = text.strip
|
34
|
+
testers_matching_text = client.search_for_tester_in_app(app_id: app_id, text: text).map { |data| self.new(data) }
|
35
|
+
testers_matching_text ||= []
|
36
|
+
if is_email_exact_match
|
37
|
+
text = text.downcase
|
38
|
+
testers_matching_text = testers_matching_text.select do |tester|
|
39
|
+
tester.email.downcase == text
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
return testers_matching_text
|
28
44
|
end
|
29
45
|
|
30
46
|
def self.create_app_level_tester(app_id: nil, first_name: nil, last_name: nil, email: nil)
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.54.0
|
4
|
+
version: 2.54.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Felix Krause
|
@@ -1125,6 +1125,7 @@ files:
|
|
1125
1125
|
- fastlane_core/lib/fastlane_core/provisioning_profile.rb
|
1126
1126
|
- fastlane_core/lib/fastlane_core/string_filters.rb
|
1127
1127
|
- fastlane_core/lib/fastlane_core/swag.rb
|
1128
|
+
- fastlane_core/lib/fastlane_core/test_parser.rb
|
1128
1129
|
- fastlane_core/lib/fastlane_core/tool_collector.rb
|
1129
1130
|
- fastlane_core/lib/fastlane_core/ui/disable_colors.rb
|
1130
1131
|
- fastlane_core/lib/fastlane_core/ui/errors/fastlane_common_error.rb
|
@@ -1277,6 +1278,7 @@ files:
|
|
1277
1278
|
- snapshot/README.md
|
1278
1279
|
- snapshot/lib/assets/SnapfileTemplate
|
1279
1280
|
- snapshot/lib/assets/SnapshotHelper.swift
|
1281
|
+
- snapshot/lib/assets/SnapshotHelperXcode8.swift
|
1280
1282
|
- snapshot/lib/snapshot.rb
|
1281
1283
|
- snapshot/lib/snapshot/collector.rb
|
1282
1284
|
- snapshot/lib/snapshot/commands_generator.rb
|
@@ -1295,7 +1297,13 @@ files:
|
|
1295
1297
|
- snapshot/lib/snapshot/screenshot_flatten.rb
|
1296
1298
|
- snapshot/lib/snapshot/screenshot_rotate.rb
|
1297
1299
|
- snapshot/lib/snapshot/setup.rb
|
1300
|
+
- snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb
|
1301
|
+
- snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb
|
1302
|
+
- snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb
|
1303
|
+
- snapshot/lib/snapshot/simulator_launchers/simulator_launcher_xcode_8.rb
|
1298
1304
|
- snapshot/lib/snapshot/test_command_generator.rb
|
1305
|
+
- snapshot/lib/snapshot/test_command_generator_base.rb
|
1306
|
+
- snapshot/lib/snapshot/test_command_generator_xcode_8.rb
|
1299
1307
|
- snapshot/lib/snapshot/update.rb
|
1300
1308
|
- spaceship/README.md
|
1301
1309
|
- spaceship/lib/assets/languageMapping.json
|
@@ -1407,24 +1415,24 @@ metadata:
|
|
1407
1415
|
post_install_message:
|
1408
1416
|
rdoc_options: []
|
1409
1417
|
require_paths:
|
1410
|
-
- spaceship/lib
|
1411
|
-
- scan/lib
|
1412
|
-
- sigh/lib
|
1413
|
-
- snapshot/lib
|
1414
|
-
- screengrab/lib
|
1415
|
-
- fastlane/lib
|
1416
1418
|
- cert/lib
|
1417
|
-
-
|
1418
|
-
- gym/lib
|
1419
|
-
- produce/lib
|
1419
|
+
- credentials_manager/lib
|
1420
1420
|
- deliver/lib
|
1421
|
-
-
|
1422
|
-
-
|
1421
|
+
- fastlane/lib
|
1422
|
+
- fastlane_core/lib
|
1423
1423
|
- frameit/lib
|
1424
|
-
-
|
1424
|
+
- gym/lib
|
1425
|
+
- match/lib
|
1426
|
+
- pem/lib
|
1425
1427
|
- pilot/lib
|
1426
1428
|
- precheck/lib
|
1427
|
-
-
|
1429
|
+
- produce/lib
|
1430
|
+
- scan/lib
|
1431
|
+
- screengrab/lib
|
1432
|
+
- sigh/lib
|
1433
|
+
- snapshot/lib
|
1434
|
+
- spaceship/lib
|
1435
|
+
- supply/lib
|
1428
1436
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1429
1437
|
requirements:
|
1430
1438
|
- - ">="
|
@@ -1432,14 +1440,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1432
1440
|
version: 2.0.0
|
1433
1441
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1434
1442
|
requirements:
|
1435
|
-
- - "
|
1443
|
+
- - ">="
|
1436
1444
|
- !ruby/object:Gem::Version
|
1437
|
-
version:
|
1445
|
+
version: '0'
|
1438
1446
|
requirements: []
|
1439
1447
|
rubyforge_project:
|
1440
|
-
rubygems_version: 2.
|
1448
|
+
rubygems_version: 2.5.2
|
1441
1449
|
signing_key:
|
1442
1450
|
specification_version: 4
|
1443
1451
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|
1444
1452
|
Android apps
|
1445
1453
|
test_files: []
|
1454
|
+
has_rdoc:
|