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

Sign up to get free protection for your applications and to get access to all the features.
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: