fastlane 2.86.0.beta.20180316050051 → 2.86.0.beta.20180317050040

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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
  3. data/deliver/lib/deliver/app_screenshot.rb +4 -4
  4. data/deliver/lib/deliver/commands_generator.rb +1 -1
  5. data/deliver/lib/deliver/options.rb +5 -0
  6. data/deliver/lib/deliver/runner.rb +9 -1
  7. data/deliver/lib/deliver/submit_for_review.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +8 -2
  9. data/fastlane/lib/fastlane/actions/badge.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/crashlytics.rb +1 -1
  11. data/fastlane/lib/fastlane/actions/download_dsyms.rb +18 -15
  12. data/fastlane/lib/fastlane/actions/get_build_number.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/get_push_certificate.rb +1 -1
  14. data/fastlane/lib/fastlane/actions/get_version_number.rb +68 -84
  15. data/fastlane/lib/fastlane/actions/hockey.rb +4 -4
  16. data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
  17. data/fastlane/lib/fastlane/actions/installr.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/oclint.rb +1 -1
  19. data/fastlane/lib/fastlane/actions/set_changelog.rb +1 -1
  20. data/fastlane/lib/fastlane/actions/slather.rb +1 -1
  21. data/fastlane/lib/fastlane/actions/sonar.rb +1 -1
  22. data/fastlane/lib/fastlane/actions/swiftlint.rb +1 -1
  23. data/fastlane/lib/fastlane/actions/testfairy.rb +1 -1
  24. data/fastlane/lib/fastlane/actions/tryouts.rb +2 -2
  25. data/fastlane/lib/fastlane/actions/typetalk.rb +1 -1
  26. data/fastlane/lib/fastlane/actions/update_app_group_identifiers.rb +1 -1
  27. data/fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb +1 -1
  28. data/fastlane/lib/fastlane/actions/update_info_plist.rb +2 -2
  29. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +2 -2
  30. data/fastlane/lib/fastlane/actions/verify_xcode.rb +1 -1
  31. data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +1 -1
  32. data/fastlane/lib/fastlane/configuration_helper.rb +1 -1
  33. data/fastlane/lib/fastlane/lane_manager.rb +4 -4
  34. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +2 -1
  35. data/fastlane/lib/fastlane/runner.rb +2 -2
  36. data/fastlane/lib/fastlane/server/socket_server.rb +17 -3
  37. data/fastlane/lib/fastlane/setup/setup.rb +1 -1
  38. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +1 -4
  39. data/fastlane/lib/fastlane/swift_lane_manager.rb +2 -2
  40. data/fastlane/lib/fastlane/version.rb +1 -1
  41. data/fastlane_core/lib/fastlane_core/command_executor.rb +1 -1
  42. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +5 -5
  43. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  44. data/fastlane_core/lib/fastlane_core/ipa_file_analyser.rb +1 -1
  45. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +2 -2
  46. data/fastlane_core/lib/fastlane_core/project.rb +6 -5
  47. data/fastlane_core/lib/fastlane_core/tool_collector.rb +1 -1
  48. data/frameit/lib/frameit/editor.rb +2 -2
  49. data/gym/lib/gym/generators/build_command_generator.rb +0 -1
  50. data/match/lib/match/git_helper.rb +1 -1
  51. data/match/lib/match/options.rb +1 -1
  52. data/match/lib/match/runner.rb +3 -3
  53. data/pilot/lib/pilot/build_manager.rb +3 -3
  54. data/scan/lib/scan/slack_poster.rb +1 -1
  55. data/scan/lib/scan/test_command_generator.rb +0 -1
  56. data/scan/lib/scan/test_result_parser.rb +1 -1
  57. data/sigh/lib/sigh/runner.rb +1 -1
  58. data/snapshot/lib/snapshot/options.rb +8 -0
  59. data/snapshot/lib/snapshot/runner.rb +1 -1
  60. data/snapshot/lib/snapshot/test_command_generator.rb +28 -1
  61. data/spaceship/lib/spaceship/client.rb +4 -4
  62. data/spaceship/lib/spaceship/du/du_client.rb +1 -1
  63. data/spaceship/lib/spaceship/launcher.rb +1 -1
  64. data/spaceship/lib/spaceship/portal/provisioning_profile.rb +4 -4
  65. data/spaceship/lib/spaceship/tunes/application.rb +34 -0
  66. data/spaceship/lib/spaceship/tunes/build_train.rb +1 -0
  67. data/spaceship/lib/spaceship/tunes/tunes_client.rb +4 -4
  68. metadata +27 -13
@@ -59,7 +59,7 @@ module FastlaneCore
59
59
  def did_finish
60
60
  return false if FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
61
61
 
62
- if !did_show_message? and !Helper.ci?
62
+ if !did_show_message? && !Helper.ci?
63
63
  show_message
64
64
  end
65
65
 
@@ -86,7 +86,7 @@ module Frameit
86
86
 
87
87
  @offset_information = fetch_config['offset'] || Offsets.image_offset(screenshot).dup
88
88
 
89
- if @offset_information and (@offset_information['offset'] or @offset_information['offset'])
89
+ if @offset_information && (@offset_information['offset'] || @offset_information['offset'])
90
90
  return @offset_information
91
91
  end
92
92
  UI.user_error!("Could not find offset_information for '#{screenshot}'")
@@ -450,7 +450,7 @@ module Frameit
450
450
  # No string files, fallback to Framefile config
451
451
  text = fetch_config[type.to_s]['text'] if fetch_config[type.to_s] && fetch_config[type.to_s]['text'] && fetch_config[type.to_s]['text'].length > 0 # Ignore empty string
452
452
 
453
- if type == :title and !text
453
+ if type == :title && !text
454
454
  # title is mandatory
455
455
  UI.user_error!("Could not get title for screenshot #{screenshot.path}. Please provide one in your Framefile.json or title.strings")
456
456
  end
@@ -37,7 +37,6 @@ module Gym
37
37
  options << "-sdk '#{config[:sdk]}'" if config[:sdk]
38
38
  options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
39
39
  options << "-destination '#{config[:destination]}'" if config[:destination]
40
- options << "-xcconfig '#{config[:xcconfig]}'" if config[:xcconfig]
41
40
  options << "-archivePath #{archive_path.shellescape}" unless config[:skip_archive]
42
41
  options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
43
42
  options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
@@ -59,7 +59,7 @@ module Match
59
59
 
60
60
  checkout_branch(branch) unless branch == "master"
61
61
 
62
- if !Helper.test? and GitHelper.match_version(@dir).nil? and manual_password.nil? and File.exist?(File.join(@dir, "README.md"))
62
+ if !Helper.test? && GitHelper.match_version(@dir).nil? && manual_password.nil? && File.exist?(File.join(@dir, "README.md"))
63
63
  UI.important("Migrating to new match...")
64
64
  ChangePassword.update(params: { git_url: git_url,
65
65
  git_branch: branch,
@@ -125,7 +125,7 @@ module Match
125
125
  description: nil,
126
126
  verify_block: proc do |value|
127
127
  unless Helper.test?
128
- if value.start_with?("/var/folders") or value.include?("tmp/") or value.include?("temp/")
128
+ if value.start_with?("/var/folders") || value.include?("tmp/") || value.include?("temp/")
129
129
  # that's fine
130
130
  else
131
131
  UI.user_error!("Specify the `git_url` instead of the `path`")
@@ -67,7 +67,7 @@ module Match
67
67
  end
68
68
 
69
69
  # Done
70
- if self.files_to_commmit.count > 0 and !params[:readonly]
70
+ if self.files_to_commmit.count > 0 && !params[:readonly]
71
71
  message = GitHelper.generate_commit_message(params)
72
72
  GitHelper.commit_changes(params[:workspace], message, params[:git_url], params[:git_branch], self.files_to_commmit)
73
73
  end
@@ -94,7 +94,7 @@ module Match
94
94
  certs = Dir[File.join(params[:workspace], "certs", cert_type.to_s, "*.cer")]
95
95
  keys = Dir[File.join(params[:workspace], "certs", cert_type.to_s, "*.p12")]
96
96
 
97
- if certs.count == 0 or keys.count == 0
97
+ if certs.count == 0 || keys.count == 0
98
98
  UI.important("Couldn't find a valid code signing identity in the git repo for #{cert_type}... creating one for you now")
99
99
  UI.crash!("No code signing identity found and can not create a new one because you enabled `readonly`") if params[:readonly]
100
100
  cert_path = Generator.generate_certificate(params, cert_type)
@@ -151,7 +151,7 @@ module Match
151
151
  end
152
152
  end
153
153
 
154
- if profile.nil? or params[:force]
154
+ if profile.nil? || params[:force]
155
155
  if params[:readonly]
156
156
  all_profiles = Dir.entries(base_dir).reject { |f| f.start_with?(".") }
157
157
  UI.error("No matching provisioning profiles found for '#{profile_name}'")
@@ -15,7 +15,7 @@ module Pilot
15
15
 
16
16
  UI.user_error!("No ipa file given") unless config[:ipa]
17
17
 
18
- if options[:changelog].nil? and options[:distribute_external] == true
18
+ if options[:changelog].nil? && options[:distribute_external] == true
19
19
  if UI.interactive?
20
20
  options[:changelog] = UI.input("No changelog provided for new build. Please provide a changelog. You can also provide a changelog using the `changelog` option")
21
21
  else
@@ -62,7 +62,7 @@ module Pilot
62
62
 
63
63
  def distribute(options, build: nil)
64
64
  start(options)
65
- if config[:apple_id].to_s.length == 0 and config[:app_identifier].to_s.length == 0
65
+ if config[:apple_id].to_s.length == 0 && config[:app_identifier].to_s.length == 0
66
66
  config[:app_identifier] = UI.input("App Identifier: ")
67
67
  end
68
68
 
@@ -102,7 +102,7 @@ module Pilot
102
102
 
103
103
  def list(options)
104
104
  start(options)
105
- if config[:apple_id].to_s.length == 0 and config[:app_identifier].to_s.length == 0
105
+ if config[:apple_id].to_s.length == 0 && config[:app_identifier].to_s.length == 0
106
106
  config[:app_identifier] = UI.input("App Identifier: ")
107
107
  end
108
108
 
@@ -41,7 +41,7 @@ module Scan
41
41
  }
42
42
  end
43
43
 
44
- if results[:tests] and results[:failures]
44
+ if results[:tests] && results[:failures]
45
45
  attachments << {
46
46
  text: "Successful Tests: #{results[:tests] - results[:failures]}",
47
47
  color: "good",
@@ -40,7 +40,6 @@ module Scan
40
40
  options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil?
41
41
  options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil?
42
42
  options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil?
43
- options << "-xcconfig '#{config[:xcconfig]}'" if config[:xcconfig]
44
43
  options << "-xctestrun '#{config[:xctestrun]}'" if config[:xctestrun]
45
44
  options << config[:xcargs] if config[:xcargs]
46
45
 
@@ -6,7 +6,7 @@ module Scan
6
6
  # e.g. ...<testsuites tests='2' failures='1'>...
7
7
  matched = output.scan(/<testsuites\b(?=[^<>]*\s+tests='(\d+)')(?=[^<>]*\s+failures='(\d+)')[^<>]+>/)
8
8
 
9
- if matched and matched.length == 1 and matched[0].length == 2
9
+ if matched && matched.length == 1 && matched[0].length == 2
10
10
  tests = matched[0][0].to_i
11
11
  failures = matched[0][1].to_i
12
12
 
@@ -222,7 +222,7 @@ module Sigh
222
222
  end
223
223
  end
224
224
 
225
- if certificates.count > 1 and !Sigh.config[:development]
225
+ if certificates.count > 1 && !Sigh.config[:development]
226
226
  UI.important("Found more than one code signing identity. Choosing the first one. Check out `fastlane sigh --help` to see all available options.")
227
227
  UI.important("Available Code Signing Identities for current filters:")
228
228
  certificates.each do |c|
@@ -37,6 +37,14 @@ module Snapshot
37
37
  description: "Pass additional arguments to xcodebuild for the test phase. Be sure to quote the setting names and values e.g. OTHER_LDFLAGS=\"-ObjC -lstdc++\"",
38
38
  optional: true,
39
39
  type: :shell_string),
40
+ FastlaneCore::ConfigItem.new(key: :xcconfig,
41
+ short_option: "-y",
42
+ env_name: "SNAPSHOT_XCCONFIG",
43
+ description: "Use an extra XCCONFIG file to build your app",
44
+ optional: true,
45
+ verify_block: proc do |value|
46
+ UI.user_error!("File not found at path '#{File.expand_path(value)}'") unless File.exist?(value)
47
+ end),
40
48
  FastlaneCore::ConfigItem.new(key: :devices,
41
49
  description: "A list of devices you want to take the screenshots from",
42
50
  short_option: "-d",
@@ -16,7 +16,7 @@ require_relative 'simulator_launchers/launcher_configuration'
16
16
  module Snapshot
17
17
  class Runner
18
18
  def work
19
- if File.exist?("./fastlane/snapshot.js") or File.exist?("./snapshot.js")
19
+ if File.exist?("./fastlane/snapshot.js") || File.exist?("./snapshot.js")
20
20
  UI.error("Found old snapshot configuration file 'snapshot.js'")
21
21
  UI.error("You updated to snapshot 1.0 which now uses UI Automation")
22
22
  UI.error("Please follow the migration guide: https://github.com/fastlane/fastlane/blob/master/snapshot/MigrationGuide.md")
@@ -52,7 +52,10 @@ module Snapshot
52
52
  return [destinations.join(' ')]
53
53
  end
54
54
 
55
- def verify_devices_share_os(devices)
55
+ def verify_devices_share_os(device_names)
56
+ # Get device types based off of device name
57
+ devices = get_device_type_with_simctl(device_names)
58
+
56
59
  # Check each device to see if it is an iOS device
57
60
  all_ios = devices.map do |device|
58
61
  device = device.downcase
@@ -74,6 +77,30 @@ module Snapshot
74
77
  # as checked above, that would imply that this is a mixed bag
75
78
  return devices.count == 1
76
79
  end
80
+
81
+ private
82
+
83
+ # Creates an alias for require to prevent `rubocop/require_tools`
84
+ # from failing. This eventually change it when `simctl` doesn't
85
+ # execute shell commands at the top-level anymore
86
+ #
87
+ # Issue: https://github.com/fastlane/fastlane/issues/12071
88
+ alias silence_the_horrible_require_checker require
89
+
90
+ def get_device_type_with_simctl(device_names)
91
+ return device_names if Helper.test?
92
+
93
+ silence_the_horrible_require_checker("simctl")
94
+
95
+ # Gets actual simctl device type from device name
96
+ return device_names.map do |device_name|
97
+ # Disable checking due to alias-ed require above
98
+ device = SimCtl.device(name: device_name) # rubocop:disable Require/MissingRequireStatement
99
+ if device
100
+ device.devicetype.name
101
+ end
102
+ end.compact
103
+ end
77
104
  end
78
105
  end
79
106
  end
@@ -340,7 +340,7 @@ module Spaceship
340
340
  #
341
341
  # @return (Spaceship::Client) The client the login method was called for
342
342
  def login(user = nil, password = nil)
343
- if user.to_s.empty? or password.to_s.empty?
343
+ if user.to_s.empty? || password.to_s.empty?
344
344
  require 'credentials_manager/account_manager'
345
345
 
346
346
  keychain_entry = CredentialsManager::AccountManager.new(user: user, password: password)
@@ -348,7 +348,7 @@ module Spaceship
348
348
  password = keychain_entry.password
349
349
  end
350
350
 
351
- if user.to_s.strip.empty? or password.to_s.strip.empty?
351
+ if user.to_s.strip.empty? || password.to_s.strip.empty?
352
352
  raise NoUserCredentialsError.new, "No login data provided"
353
353
  end
354
354
 
@@ -657,9 +657,9 @@ module Spaceship
657
657
 
658
658
  # Is called from `parse_response` to store the latest csrf_token (if available)
659
659
  def store_csrf_tokens(response)
660
- if response and response.headers
660
+ if response && response.headers
661
661
  tokens = response.headers.select { |k, v| %w(csrf csrf_ts).include?(k) }
662
- if tokens and !tokens.empty?
662
+ if tokens && !tokens.empty?
663
663
  @csrf_tokens = tokens
664
664
  end
665
665
  end
@@ -89,7 +89,7 @@ module Spaceship
89
89
  req.headers['Connection'] = "keep-alive"
90
90
  end
91
91
 
92
- if r.status == 500 and r.body.include?("Server Error")
92
+ if r.status == 500 && r.body.include?("Server Error")
93
93
  return upload_file(app_version: app_version, upload_file: upload_file, path: path, content_provider_id: content_provider_id, sso_token: sso_token, du_validation_rule_set: du_validation_rule_set, app_id: app_id)
94
94
  end
95
95
 
@@ -23,7 +23,7 @@ module Spaceship
23
23
  def initialize(user = nil, password = nil)
24
24
  @client = PortalClient.new
25
25
 
26
- if user or password
26
+ if user || password
27
27
  @client.login(user, password)
28
28
  end
29
29
  end
@@ -262,7 +262,7 @@ module Spaceship
262
262
  app = Spaceship::Portal::App.find(bundle_id, mac: mac)
263
263
  raise "Could not find app with bundle id '#{bundle_id}'" unless app
264
264
 
265
- raise "Invalid sub_platform #{sub_platform}, valid values are tvOS" if !sub_platform.nil? and sub_platform != 'tvOS'
265
+ raise "Invalid sub_platform #{sub_platform}, valid values are tvOS" if !sub_platform.nil? && sub_platform != 'tvOS'
266
266
 
267
267
  # Fill in sensible default values
268
268
  name ||= [bundle_id, self.pretty_type].join(' ')
@@ -278,8 +278,8 @@ module Spaceship
278
278
  # Fix https://github.com/KrauseFx/fastlane/issues/349
279
279
  certificate_parameter = certificate_parameter.first if certificate_parameter.count == 1
280
280
 
281
- if devices.nil? or devices.count == 0
282
- if self == Development or self == AdHoc
281
+ if devices.nil? || devices.count == 0
282
+ if self == Development || self == AdHoc
283
283
  # For Development and AdHoc we usually want all compatible devices by default
284
284
  if mac
285
285
  devices = Spaceship::Portal::Device.all_macs
@@ -364,7 +364,7 @@ module Spaceship
364
364
  # This may also contain invalid or expired profiles
365
365
  def find_by_bundle_id(bundle_id: nil, mac: false, sub_platform: nil)
366
366
  raise "Missing required parameter 'bundle_id'" if bundle_id.to_s.empty?
367
- raise "Invalid sub_platform #{sub_platform}, valid values are tvOS" if !sub_platform.nil? and sub_platform != 'tvOS'
367
+ raise "Invalid sub_platform #{sub_platform}, valid values are tvOS" if !sub_platform.nil? && sub_platform != 'tvOS'
368
368
  find_tvos_profiles = sub_platform == 'tvOS'
369
369
  all(mac: mac).find_all do |profile|
370
370
  profile.app.bundle_id == bundle_id && profile.tvos? == find_tvos_profiles
@@ -6,6 +6,7 @@ require_relative 'app_submission'
6
6
  require_relative 'app_version'
7
7
  require_relative 'app_version_generated_promocodes'
8
8
  require_relative 'app_version_history'
9
+ require_relative 'build_train'
9
10
  require_relative 'iap'
10
11
  require_relative 'tunes_base'
11
12
  require_relative 'version_set'
@@ -236,6 +237,15 @@ module Spaceship
236
237
  end
237
238
  end
238
239
 
240
+ def reject_version_if_possible!
241
+ can_reject = edit_version.can_reject_version
242
+ if can_reject
243
+ client.reject!(apple_id, edit_version.version_id)
244
+ end
245
+
246
+ return can_reject
247
+ end
248
+
239
249
  # set the price tier. This method doesn't require `save` to be called
240
250
  def update_price_tier!(price_tier)
241
251
  client.update_price_tier!(self.apple_id, price_tier)
@@ -296,6 +306,30 @@ module Spaceship
296
306
  return TestFlight::Build.all_processing_builds(app_id: self.apple_id, platform: platform || self.platform)
297
307
  end
298
308
 
309
+ def tunes_all_build_trains(app_id: nil, platform: nil)
310
+ resp = client.all_build_trains(app_id: apple_id, platform: platform)
311
+ trains = resp["trains"] or []
312
+ trains.map do |attrs|
313
+ attrs['application'] = self
314
+ Tunes::BuildTrain.factory(attrs)
315
+ end
316
+ end
317
+
318
+ def tunes_all_builds_for_train(train: nil, platform: nil)
319
+ resp = client.all_builds_for_train(app_id: apple_id, train: train, platform: platform)
320
+ items = resp["items"] or []
321
+ items.map do |attrs|
322
+ attrs['apple_id'] = apple_id
323
+ Tunes::Build.factory(attrs)
324
+ end
325
+ end
326
+
327
+ def tunes_build_details(train: nil, build_number: nil, platform: nil)
328
+ resp = client.build_details(app_id: apple_id, train: train, build_number: build_number, platform: platform)
329
+ resp['apple_id'] = apple_id
330
+ Tunes::BuildDetails.factory(resp)
331
+ end
332
+
299
333
  # Get all builds that are already processed for all build trains
300
334
  # You can either use the return value (array) or pass a block
301
335
  def builds(platform: nil)
@@ -38,6 +38,7 @@ module Spaceship
38
38
  attr_reader :invalid_builds
39
39
 
40
40
  attr_mapping(
41
+ 'application' => 'application',
41
42
  'versionString' => :version_string,
42
43
  'platform' => :platform,
43
44
  'externalTesting.value' => :external_testing_enabled,
@@ -182,7 +182,7 @@ module Spaceship
182
182
  hash.each do |key, value|
183
183
  errors += handle_response_hash.call(value, current_language)
184
184
 
185
- next unless key == 'errorKeys' and value.kind_of?(Array) and value.count > 0
185
+ next unless key == 'errorKeys' && value.kind_of?(Array) && value.count > 0
186
186
  # Prepend the error with the language so it's easier to understand for the user
187
187
  errors += value.collect do |current_error_message|
188
188
  current_language ? "[#{current_language}]: #{current_error_message}" : current_error_message
@@ -215,11 +215,11 @@ module Spaceship
215
215
 
216
216
  if errors.count > 0 # they are separated by `.` by default
217
217
  # Sample `error` content: [["Forbidden"]]
218
- if errors.count == 1 and errors.first == "You haven't made any changes."
218
+ if errors.count == 1 && errors.first == "You haven't made any changes."
219
219
  # This is a special error which we really don't care about
220
- elsif errors.count == 1 and errors.first.include?("try again later")
220
+ elsif errors.count == 1 && errors.first.include?("try again later")
221
221
  raise ITunesConnectTemporaryError.new, errors.first
222
- elsif errors.count == 1 and errors.first.include?("Forbidden")
222
+ elsif errors.count == 1 && errors.first.include?("Forbidden")
223
223
  raise_insuffient_permission_error!
224
224
  elsif flaky_api_call
225
225
  raise ITunesConnectPotentialServerError.new, errors.join(' ')
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.86.0.beta.20180316050051
4
+ version: 2.86.0.beta.20180317050040
5
5
  platform: ruby
6
6
  authors:
7
7
  - Maksym Grebenets
@@ -27,7 +27,7 @@ authors:
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2018-03-16 00:00:00.000000000 Z
30
+ date: 2018-03-17 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -591,6 +591,20 @@ dependencies:
591
591
  - - "~>"
592
592
  - !ruby/object:Gem::Version
593
593
  version: '0.9'
594
+ - !ruby/object:Gem::Dependency
595
+ name: simctl
596
+ requirement: !ruby/object:Gem::Requirement
597
+ requirements:
598
+ - - "~>"
599
+ - !ruby/object:Gem::Version
600
+ version: '1.6'
601
+ type: :runtime
602
+ prerelease: false
603
+ version_requirements: !ruby/object:Gem::Requirement
604
+ requirements:
605
+ - - "~>"
606
+ - !ruby/object:Gem::Version
607
+ version: '1.6'
594
608
  - !ruby/object:Gem::Dependency
595
609
  name: google-api-client
596
610
  requirement: !ruby/object:Gem::Requirement
@@ -1607,22 +1621,22 @@ post_install_message:
1607
1621
  rdoc_options: []
1608
1622
  require_paths:
1609
1623
  - supply/lib
1610
- - sigh/lib
1611
- - produce/lib
1612
- - scan/lib
1624
+ - fastlane_core/lib
1613
1625
  - cert/lib
1614
- - frameit/lib
1615
- - screengrab/lib
1616
- - precheck/lib
1617
- - pilot/lib
1618
1626
  - gym/lib
1619
- - snapshot/lib
1620
- - fastlane_core/lib
1627
+ - produce/lib
1628
+ - pilot/lib
1629
+ - scan/lib
1630
+ - spaceship/lib
1631
+ - sigh/lib
1621
1632
  - deliver/lib
1622
- - match/lib
1633
+ - screengrab/lib
1623
1634
  - pem/lib
1635
+ - frameit/lib
1624
1636
  - credentials_manager/lib
1625
- - spaceship/lib
1637
+ - snapshot/lib
1638
+ - match/lib
1639
+ - precheck/lib
1626
1640
  - fastlane/lib
1627
1641
  required_ruby_version: !ruby/object:Gem::Requirement
1628
1642
  requirements: