fastlane 2.98.0 → 2.99.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.
Files changed (119) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +70 -70
  3. data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
  4. data/deliver/lib/assets/DeliverfileDefault +1 -1
  5. data/deliver/lib/assets/DeliverfileDefault.swift +1 -1
  6. data/deliver/lib/assets/summary.html.erb +1 -1
  7. data/deliver/lib/deliver/commands_generator.rb +2 -2
  8. data/deliver/lib/deliver/detect_values.rb +1 -1
  9. data/deliver/lib/deliver/download_screenshots.rb +1 -1
  10. data/deliver/lib/deliver/options.rb +3 -3
  11. data/deliver/lib/deliver/runner.rb +9 -9
  12. data/deliver/lib/deliver/submit_for_review.rb +3 -3
  13. data/deliver/lib/deliver/upload_metadata.rb +3 -3
  14. data/deliver/lib/deliver/upload_screenshots.rb +2 -2
  15. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +3 -3
  16. data/fastlane/lib/fastlane/actions/cocoapods.rb +1 -0
  17. data/fastlane/lib/fastlane/actions/create_app_online.rb +1 -1
  18. data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +3 -3
  19. data/fastlane/lib/fastlane/actions/docs/create_app_online.md +8 -8
  20. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  21. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
  22. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +14 -14
  23. data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +2 -2
  24. data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -7
  25. data/fastlane/lib/fastlane/actions/github_api.rb +2 -0
  26. data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
  27. data/fastlane/lib/fastlane/actions/set_changelog.rb +6 -6
  28. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -1
  29. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +1 -1
  30. data/fastlane/lib/fastlane/command_line_handler.rb +2 -2
  31. data/fastlane/lib/fastlane/commands_generator.rb +1 -0
  32. data/fastlane/lib/fastlane/fast_file.rb +8 -6
  33. data/fastlane/lib/fastlane/lane_manager.rb +0 -3
  34. data/fastlane/lib/fastlane/runner.rb +1 -9
  35. data/fastlane/lib/fastlane/server/socket_server.rb +4 -2
  36. data/fastlane/lib/fastlane/setup/setup_ios.rb +12 -12
  37. data/fastlane/lib/fastlane/swift_lane_manager.rb +9 -8
  38. data/fastlane/lib/fastlane/version.rb +1 -1
  39. data/fastlane/swift/Appfile.swift +1 -1
  40. data/fastlane/swift/ArgumentProcessor.swift +3 -1
  41. data/fastlane/swift/ControlCommand.swift +0 -1
  42. data/fastlane/swift/Deliverfile.swift +1 -1
  43. data/fastlane/swift/Fastlane.swift +3 -3
  44. data/fastlane/swift/Gymfile.swift +1 -1
  45. data/fastlane/swift/LaneFileProtocol.swift +0 -1
  46. data/fastlane/swift/Matchfile.swift +1 -1
  47. data/fastlane/swift/Precheckfile.swift +1 -1
  48. data/fastlane/swift/RubyCommand.swift +0 -1
  49. data/fastlane/swift/RubyCommandable.swift +0 -1
  50. data/fastlane/swift/Runner.swift +7 -7
  51. data/fastlane/swift/RunnerArgument.swift +0 -1
  52. data/fastlane/swift/Scanfile.swift +1 -1
  53. data/fastlane/swift/Screengrabfile.swift +1 -1
  54. data/fastlane/swift/Snapshotfile.swift +1 -1
  55. data/fastlane/swift/SocketClient.swift +0 -1
  56. data/fastlane/swift/SocketClientDelegateProtocol.swift +0 -1
  57. data/fastlane/swift/SocketResponse.swift +0 -1
  58. data/fastlane/swift/main.swift +2 -2
  59. data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +10 -39
  60. data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +34 -30
  61. data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +16 -176
  62. data/fastlane_core/lib/fastlane_core/analytics/app_identifier_guesser.rb +1 -1
  63. data/fastlane_core/lib/fastlane_core/build_watcher.rb +2 -2
  64. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +8 -8
  65. data/fastlane_core/lib/fastlane_core/module.rb +2 -5
  66. data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_error.rb +0 -1
  67. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +5 -7
  68. data/gym/lib/gym/detect_values.rb +23 -0
  69. data/gym/lib/gym/generators/package_command_generator_xcode7.rb +1 -21
  70. data/match/lib/match/spaceship_ensure.rb +1 -1
  71. data/pilot/lib/pilot/build_manager.rb +2 -2
  72. data/pilot/lib/pilot/manager.rb +2 -2
  73. data/pilot/lib/pilot/options.rb +4 -4
  74. data/precheck/lib/precheck/options.rb +2 -2
  75. data/produce/lib/produce/commands_generator.rb +1 -1
  76. data/produce/lib/produce/developer_center.rb +1 -1
  77. data/produce/lib/produce/itunes_connect.rb +6 -6
  78. data/produce/lib/produce/options.rb +4 -4
  79. data/scan/lib/scan/test_command_generator.rb +6 -2
  80. data/screengrab/lib/screengrab/runner.rb +2 -2
  81. data/sigh/lib/sigh/runner.rb +6 -1
  82. data/snapshot/lib/assets/SnapshotHelper.swift +0 -1
  83. data/snapshot/lib/assets/SnapshotHelperXcode8.swift +0 -1
  84. data/spaceship/README.md +3 -3
  85. data/spaceship/lib/spaceship.rb +1 -1
  86. data/spaceship/lib/spaceship/client.rb +12 -7
  87. data/spaceship/lib/spaceship/du/du_client.rb +1 -1
  88. data/spaceship/lib/spaceship/errors.rb +1 -1
  89. data/spaceship/lib/spaceship/module.rb +1 -1
  90. data/spaceship/lib/spaceship/playground.rb +3 -3
  91. data/spaceship/lib/spaceship/portal/portal_client.rb +2 -2
  92. data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -5
  93. data/spaceship/lib/spaceship/test_flight/client.rb +12 -1
  94. data/spaceship/lib/spaceship/test_flight/group.rb +1 -1
  95. data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
  96. data/spaceship/lib/spaceship/tunes/app_analytics.rb +143 -0
  97. data/spaceship/lib/spaceship/tunes/app_details.rb +1 -1
  98. data/spaceship/lib/spaceship/tunes/app_image.rb +1 -1
  99. data/spaceship/lib/spaceship/tunes/app_screenshot.rb +1 -1
  100. data/spaceship/lib/spaceship/tunes/app_status.rb +2 -2
  101. data/spaceship/lib/spaceship/tunes/app_submission.rb +1 -1
  102. data/spaceship/lib/spaceship/tunes/app_trailer.rb +1 -1
  103. data/spaceship/lib/spaceship/tunes/app_version.rb +6 -6
  104. data/spaceship/lib/spaceship/tunes/app_version_history.rb +1 -1
  105. data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +1 -1
  106. data/spaceship/lib/spaceship/tunes/application.rb +15 -4
  107. data/spaceship/lib/spaceship/tunes/availability.rb +24 -8
  108. data/spaceship/lib/spaceship/tunes/b2b_user.rb +7 -2
  109. data/spaceship/lib/spaceship/tunes/build.rb +2 -2
  110. data/spaceship/lib/spaceship/tunes/build_details.rb +1 -1
  111. data/spaceship/lib/spaceship/tunes/build_train.rb +2 -2
  112. data/spaceship/lib/spaceship/tunes/errors.rb +1 -1
  113. data/spaceship/lib/spaceship/tunes/iap.rb +2 -2
  114. data/spaceship/lib/spaceship/tunes/iap_status.rb +1 -1
  115. data/spaceship/lib/spaceship/tunes/iap_type.rb +1 -1
  116. data/spaceship/lib/spaceship/tunes/tunes.rb +1 -0
  117. data/spaceship/lib/spaceship/tunes/tunes_client.rb +41 -13
  118. data/spaceship/lib/spaceship/two_step_client.rb +1 -1
  119. metadata +15 -14
@@ -24,8 +24,7 @@ module Spaceship
24
24
  # @return (Bool) b2b available for distribution
25
25
  attr_accessor :b2b_unavailable
26
26
 
27
- # @return (Array of Spaceship::Tunes::B2bUser objects) A list of users set by user - if not
28
- # then the b2b user list that is currently set
27
+ # @return (Array of Spaceship::Tunes::B2bUser objects) A list of users
29
28
  attr_accessor :b2b_users
30
29
 
31
30
  attr_mapping(
@@ -78,7 +77,7 @@ module Spaceship
78
77
  end
79
78
 
80
79
  def b2b_users
81
- @b2b_users ||= raw_data['b2bUsers'].map { |user| B2bUser.new(user) }
80
+ @b2b_users || raw_data['b2bUsers'].map { |user| B2bUser.new(user) }
82
81
  end
83
82
 
84
83
  def b2b_app_enabled
@@ -100,16 +99,33 @@ module Spaceship
100
99
  @b2b_app_enabled = true
101
100
  # need to set the educational discount to false
102
101
  @educational_discount = false
103
- self
102
+ return self
104
103
  end
105
104
 
106
105
  # Adds users for b2b enabled apps
107
106
  def add_b2b_users(user_list = [])
108
107
  raise "Cannot add b2b users if b2b is not enabled" unless b2b_app_enabled
109
- @b2b_users = user_list.map do |user|
110
- B2bUser.from_username(user)
111
- end
112
- self
108
+ @b2b_users = user_list.map { |user| B2bUser.from_username(user) }
109
+ return self
110
+ end
111
+
112
+ # Updates users for b2b enabled apps
113
+ def update_b2b_users(user_list = [])
114
+ raise "Cannot add b2b users if b2b is not enabled" unless b2b_app_enabled
115
+
116
+ added_users = b2b_users.map(&:ds_username)
117
+
118
+ # Returns if list is unchanged
119
+ return self if (added_users - user_list) == (user_list - added_users)
120
+
121
+ users_to_add = user_list.reject { |user| added_users.include?(user) }
122
+ users_to_remove = added_users.reject { |user| user_list.include?(user) }
123
+
124
+ @b2b_users = b2b_users.reject { |user| users_to_remove.include?(user.ds_username) }
125
+ @b2b_users.concat(users_to_add.map { |user| B2bUser.from_username(user) })
126
+ @b2b_users.concat(users_to_remove.map { |user| B2bUser.from_username(user, is_add_type: false) })
127
+
128
+ return self
113
129
  end
114
130
  end
115
131
  end
@@ -17,8 +17,13 @@ module Spaceship
17
17
  'value.dsUsername' => :ds_username
18
18
  )
19
19
 
20
- def self.from_username(username)
21
- self.new({ 'value' => { 'add' => true, 'delete' => false, 'dsUsername' => username } })
20
+ def self.from_username(username, is_add_type: true)
21
+ self.new({ 'value' => { 'add' => is_add_type, 'delete' => !is_add_type, 'dsUsername' => username } })
22
+ end
23
+
24
+ # equality check for the two objects
25
+ def ==(other)
26
+ add == other.add && delete == other.delete && ds_username == other.ds_username
22
27
  end
23
28
  end
24
29
  end
@@ -8,7 +8,7 @@ module Spaceship
8
8
  # @!group General metadata
9
9
  #####################################################
10
10
 
11
- # @return (String) The App identifier of this app, provided by iTunes Connect
11
+ # @return (String) The App identifier of this app, provided by App Store Connect
12
12
  # @example
13
13
  # "1013943394"
14
14
  attr_accessor :apple_id
@@ -16,7 +16,7 @@ module Spaceship
16
16
  # @return (Spaceship::Tunes::BuildTrain) A reference to the build train this build is contained in
17
17
  attr_accessor :build_train
18
18
 
19
- # @return (Integer) The ID generated by iTunes Connect
19
+ # @return (Integer) The ID generated by App Store Connect
20
20
  attr_accessor :id
21
21
 
22
22
  # @return (Boolean)
@@ -4,7 +4,7 @@ module Spaceship
4
4
  module Tunes
5
5
  # Represents the details of a build
6
6
  class BuildDetails < TunesBase
7
- # @return (String) The App identifier of this app, provided by iTunes Connect
7
+ # @return (String) The App identifier of this app, provided by App Store Connect
8
8
  # @example
9
9
  # "1013943394"
10
10
  attr_accessor :apple_id
@@ -4,7 +4,7 @@ require_relative 'build'
4
4
 
5
5
  module Spaceship
6
6
  module Tunes
7
- # Represents a build train of builds from iTunes Connect
7
+ # Represents a build train of builds from App Store Connect
8
8
  # A build train is all builds for a given version number with different build numbers
9
9
  class BuildTrain < TunesBase
10
10
  # @return (Spaceship::Tunes::Application) A reference to the application this train is for
@@ -165,7 +165,7 @@ module Spaceship
165
165
  error_message << "<key>ITSAppUsesNonExemptEncryption</key><false/>"
166
166
  error_message << ""
167
167
  error_message << "Afterwards re-build your app and try again"
168
- error_message << "iTunes Connect reported: '#{ex}'"
168
+ error_message << "App Store Connect reported: '#{ex}'"
169
169
  raise error_message.join("\n")
170
170
  else
171
171
  raise ex
@@ -2,7 +2,7 @@ require_relative '../errors'
2
2
 
3
3
  module Spaceship
4
4
  module Tunes
5
- # ITunesConnectError is only thrown when iTunes Connect raises an exception
5
+ # ITunesConnectError is only thrown when App Store Connect raises an exception
6
6
  class Error < BasicPreferredInfoError
7
7
  end
8
8
 
@@ -22,7 +22,7 @@ module Spaceship
22
22
  Tunes::IAPFamilies.new(attrs)
23
23
  end
24
24
 
25
- # Creates a new In-App-Purchese on iTunes Connect
25
+ # Creates a new In-App-Purchese on App Store Connect
26
26
  # if the In-App-Purchase already exists an exception is raised. Spaceship::TunesClient::ITunesConnectError
27
27
  # @param type (String): The Type of the in-app-purchase (Spaceship::Tunes::IAPType::CONSUMABLE,Spaceship::Tunes::IAPType::NON_CONSUMABLE,Spaceship::Tunes::IAPType::RECURRING,Spaceship::Tunes::IAPType::NON_RENEW_SUBSCRIPTION)
28
28
  # @param versions (Hash): a Hash of the languages
@@ -118,7 +118,7 @@ module Spaceship
118
118
 
119
119
  # return all available In-App-Purchase's of current app
120
120
  # this is not paged inside iTC-API so if you have a lot if IAP's (2k+)
121
- # it might take some time to load, same as it takes when you load the list via iTunes Connect
121
+ # it might take some time to load, same as it takes when you load the list via App Store Connect
122
122
  def all(include_deleted: false)
123
123
  r = client.iaps(app_id: self.application.apple_id)
124
124
  return_iaps = []
@@ -28,7 +28,7 @@ module Spaceship
28
28
  # The developer took the app from the App Store
29
29
  DEVELOPER_REMOVED_FROM_SALE = "Developer Removed From Sale"
30
30
 
31
- # Get the iap status matching based on a string (given by iTunes Connect)
31
+ # Get the iap status matching based on a string (given by App Store Connect)
32
32
  def self.get_from_string(text)
33
33
  mapping = {
34
34
  'missingMetadata' => MISSING_METADATA,
@@ -21,7 +21,7 @@ module Spaceship
21
21
  # A product that allows users to purchase a service with a limited duration.
22
22
  READABLE_NON_RENEWING_SUBSCRIPTION = "Non-Renewing Subscription"
23
23
 
24
- # Get the iap type matching based on a string (given by iTunes Connect)
24
+ # Get the iap type matching based on a string (given by App Store Connect)
25
25
  def self.get_from_string(text)
26
26
  mapping = {
27
27
  'ITC.addons.type.consumable' => READABLE_CONSUMABLE,
@@ -33,3 +33,4 @@ require_relative 'member'
33
33
 
34
34
  require_relative 'app_version_promocodes'
35
35
  require_relative 'app_version_generated_promocodes'
36
+ require_relative 'app_analytics'
@@ -62,7 +62,7 @@ module Spaceship
62
62
  t_name = (team_name || ENV['FASTLANE_ITC_TEAM_NAME'] || '').strip
63
63
 
64
64
  if t_name.length > 0 && t_id.length.zero? # we prefer IDs over names, they are unique
65
- puts("Looking for iTunes Connect Team with name #{t_name}") if Spaceship::Globals.verbose?
65
+ puts("Looking for App Store Connect Team with name #{t_name}") if Spaceship::Globals.verbose?
66
66
 
67
67
  teams.each do |t|
68
68
  t_id = t['contentProvider']['contentProviderId'].to_s if t['contentProvider']['name'].casecmp(t_name).zero?
@@ -74,7 +74,7 @@ module Spaceship
74
74
  t_id = teams.first['contentProvider']['contentProviderId'].to_s if teams.count == 1
75
75
 
76
76
  if t_id.length > 0
77
- puts("Looking for iTunes Connect Team with ID #{t_id}") if Spaceship::Globals.verbose?
77
+ puts("Looking for App Store Connect Team with ID #{t_id}") if Spaceship::Globals.verbose?
78
78
 
79
79
  # actually set the team id here
80
80
  self.team_id = t_id
@@ -83,9 +83,9 @@ module Spaceship
83
83
 
84
84
  # user didn't specify a team... #thisiswhywecanthavenicethings
85
85
  loop do
86
- puts("Multiple #{'iTunes Connect teams'.yellow} found, please enter the number of the team you want to use: ")
86
+ puts("Multiple #{'App Store Connect teams'.yellow} found, please enter the number of the team you want to use: ")
87
87
  if ENV["FASTLANE_HIDE_TEAM_INFORMATION"].to_s.length == 0
88
- puts("Note: to automatically choose the team, provide either the iTunes Connect Team ID, or the Team Name in your fastlane/Appfile:")
88
+ puts("Note: to automatically choose the team, provide either the App Store Connect Team ID, or the Team Name in your fastlane/Appfile:")
89
89
  puts("Alternatively you can pass the team name or team ID using the `FASTLANE_ITC_TEAM_ID` or `FASTLANE_ITC_TEAM_NAME` environment variable")
90
90
  first_team = teams.first["contentProvider"]
91
91
  puts("")
@@ -103,9 +103,9 @@ module Spaceship
103
103
  end
104
104
 
105
105
  unless Spaceship::Client::UserInterface.interactive?
106
- puts("Multiple teams found on iTunes Connect, Your Terminal is running in non-interactive mode! Cannot continue from here.")
106
+ puts("Multiple teams found on App Store Connect, Your Terminal is running in non-interactive mode! Cannot continue from here.")
107
107
  puts("Please check that you set FASTLANE_ITC_TEAM_ID or FASTLANE_ITC_TEAM_NAME to the right value.")
108
- raise "Multiple iTunes Connect Teams found; unable to choose, terminal not interactive!"
108
+ raise "Multiple App Store Connect Teams found; unable to choose, terminal not interactive!"
109
109
  end
110
110
 
111
111
  selected = ($stdin.gets || '').strip.to_i - 1
@@ -270,7 +270,7 @@ module Spaceship
270
270
  handle_itc_response(r.body)
271
271
  end
272
272
 
273
- # Creates a new application on iTunes Connect
273
+ # Creates a new application on App Store Connect
274
274
  # @param name (String): The name of your app as it will appear on the App Store.
275
275
  # This can't be longer than 255 characters.
276
276
  # @param primary_language (String): If localized app information isn't available in an
@@ -510,6 +510,31 @@ module Spaceship
510
510
  handle_itc_response(r.body)
511
511
  end
512
512
 
513
+ #####################################################
514
+ # @!group AppAnalytics
515
+ #####################################################
516
+
517
+ def time_series_analytics(app_ids, measures, start_time, end_time, frequency)
518
+ data = {
519
+ adamId: app_ids,
520
+ dimensionFilters: [],
521
+ endTime: end_time,
522
+ frequency: frequency,
523
+ group: nil,
524
+ measures: measures,
525
+ startTime: start_time
526
+ }
527
+
528
+ r = request(:post) do |req|
529
+ req.url("https://analytics.itunes.apple.com/analytics/api/v1/data/time-series")
530
+ req.body = data.to_json
531
+ req.headers['Content-Type'] = 'application/json'
532
+ req.headers['X-Requested-By'] = 'analytics.itunes.apple.com'
533
+ end
534
+
535
+ data = parse_response(r)
536
+ end
537
+
513
538
  #####################################################
514
539
  # @!group Pricing
515
540
  #####################################################
@@ -824,13 +849,13 @@ module Spaceship
824
849
  if retry_error_messages.any? { |message| ex.to_s.include?(message) }
825
850
  tries -= 1
826
851
  if tries > 0
827
- logger.warn("Received temporary server error from iTunes Connect. Retrying the request...")
852
+ logger.warn("Received temporary server error from App Store Connect. Retrying the request...")
828
853
  sleep(3) unless Object.const_defined?("SpecHelper")
829
854
  retry
830
855
  end
831
856
  end
832
857
 
833
- raise Spaceship::Client::UnexpectedResponse, "Temporary iTunes Connect error: #{ex}"
858
+ raise Spaceship::Client::UnexpectedResponse, "Temporary App Store Connect error: #{ex}"
834
859
  end
835
860
  # rubocop:enable Metrics/BlockNesting
836
861
 
@@ -1018,12 +1043,15 @@ module Spaceship
1018
1043
 
1019
1044
  handle_itc_response(r.body)
1020
1045
 
1021
- # iTunes Connect still returns a success status code even the submission
1022
- # was failed because of Ad ID info. This checks for any section error
1023
- # keys in returned adIdInfo and prints them out.
1046
+ # App Store Connect still returns a success status code even the submission
1047
+ # was failed because of Ad ID Info / Export Complicance. This checks for any section error
1048
+ # keys in returned adIdInfo / exportCompliance and prints them out.
1024
1049
  ad_id_error_keys = r.body.fetch('data').fetch('adIdInfo').fetch('sectionErrorKeys')
1050
+ export_error_keys = r.body.fetch('data').fetch('exportCompliance').fetch('sectionErrorKeys')
1025
1051
  if ad_id_error_keys.any?
1026
1052
  raise "Something wrong with your Ad ID information: #{ad_id_error_keys}."
1053
+ elsif export_error_keys.any?
1054
+ raise "Something wrong with your Export Complicance: #{export_error_keys}"
1027
1055
  elsif r.body.fetch('messages').fetch('info').last == "Successful POST"
1028
1056
  # success
1029
1057
  else
@@ -1341,7 +1369,7 @@ module Spaceship
1341
1369
  return yield
1342
1370
  rescue Spaceship::TunesClient::ITunesConnectTemporaryError => ex
1343
1371
  unless (tries -= 1).zero?
1344
- msg = "iTunes Connect temporary error received: '#{ex.message}'. Retrying after 60 seconds (remaining: #{tries})..."
1372
+ msg = "App Store Connect temporary error received: '#{ex.message}'. Retrying after 60 seconds (remaining: #{tries})..."
1345
1373
  puts(msg)
1346
1374
  logger.warn(msg)
1347
1375
  sleep(60) unless Object.const_defined?("SpecHelper")
@@ -181,7 +181,7 @@ module Spaceship
181
181
  def store_session
182
182
  # If the request was successful, r.body is actually nil
183
183
  # The previous request will fail if the user isn't on a team
184
- # on iTunes Connect, but it still works, so we're good
184
+ # on App Store Connect, but it still works, so we're good
185
185
 
186
186
  # Tell iTC that we are trustworthy (obviously)
187
187
  # This will update our local cookies to something new
metadata CHANGED
@@ -1,33 +1,33 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.98.0
4
+ version: 2.99.0
5
5
  platform: ruby
6
6
  authors:
7
- - Stefan Natchev
8
- - Jimmy Dee
9
7
  - Maksym Grebenets
10
- - Joshua Liebowitz
11
- - Jérôme Lacoste
12
8
  - Helmut Januschka
13
- - Matthew Ellis
9
+ - Jan Piotrowski
10
+ - Josh Holtz
11
+ - Fumiya Nakamura
12
+ - Jimmy Dee
14
13
  - Kohki Miki
14
+ - Aaron Brager
15
+ - Matthew Ellis
16
+ - Iulian Onofrei
17
+ - Jérôme Lacoste
18
+ - Joshua Liebowitz
15
19
  - Felix Krause
16
- - Josh Holtz
17
- - Jan Piotrowski
18
20
  - Danielle Tomlinson
19
- - Aaron Brager
20
- - Manu Wallner
21
21
  - Jorge Revuelta H
22
- - Olivier Halligon
23
- - Fumiya Nakamura
24
- - Iulian Onofrei
22
+ - Manu Wallner
25
23
  - Luka Mirosevic
24
+ - Olivier Halligon
25
+ - Stefan Natchev
26
26
  - Andrew McBurney
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
30
- date: 2018-06-18 00:00:00.000000000 Z
30
+ date: 2018-07-02 00:00:00.000000000 Z
31
31
  dependencies:
32
32
  - !ruby/object:Gem::Dependency
33
33
  name: slack-notifier
@@ -1576,6 +1576,7 @@ files:
1576
1576
  - spaceship/lib/spaceship/test_flight/group.rb
1577
1577
  - spaceship/lib/spaceship/test_flight/test_info.rb
1578
1578
  - spaceship/lib/spaceship/test_flight/tester.rb
1579
+ - spaceship/lib/spaceship/tunes/app_analytics.rb
1579
1580
  - spaceship/lib/spaceship/tunes/app_details.rb
1580
1581
  - spaceship/lib/spaceship/tunes/app_image.rb
1581
1582
  - spaceship/lib/spaceship/tunes/app_ratings.rb