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
@@ -1,50 +1,21 @@
1
1
  module FastlaneCore
2
2
  class AnalyticsEventBuilder
3
- attr_accessor :base_hash
4
3
  attr_accessor :action_name
5
4
 
6
- def initialize(oauth_app_name: nil, p_hash: nil, session_id: nil, action_name: nil, timestamp_millis: (Time.now.to_f * 1000).to_i)
5
+ def initialize(p_hash: nil, session_id: nil, action_name: nil)
6
+ @p_hash = p_hash
7
+ @session_id = session_id
7
8
  @action_name = action_name
8
- @base_hash = {
9
- event_source: {
10
- oauth_app_name: oauth_app_name,
11
- product: 'fastlane'
12
- },
13
- actor: {
14
- name: p_hash,
15
- detail: session_id
16
- },
17
- millis_since_epoch: timestamp_millis,
18
- version: 1
19
- }
20
- end
21
-
22
- def launched_event(primary_target_hash: nil, secondary_target_hash: nil)
23
- return new_event(
24
- stage: 'launched',
25
- primary_target_hash: primary_target_hash,
26
- secondary_target_hash: secondary_target_hash
27
- )
28
- end
29
-
30
- def completed_event(primary_target_hash: nil, secondary_target_hash: nil)
31
- return new_event(
32
- stage: 'completed',
33
- primary_target_hash: primary_target_hash,
34
- secondary_target_hash: secondary_target_hash
35
- )
36
9
  end
37
10
 
38
- def new_event(stage: nil, primary_target_hash: nil, secondary_target_hash: nil)
39
- raise 'Need at least a primary_target_hash' if primary_target_hash.nil?
40
- event = base_hash.dup
41
- event[:action] = {
42
- name: stage,
43
- detail: action_name
11
+ def new_event(action_stage)
12
+ {
13
+ client_id: @p_hash,
14
+ category: :undefined,
15
+ action: action_stage,
16
+ label: action_name,
17
+ value: nil
44
18
  }
45
- event[:primary_target] = primary_target_hash
46
- event[:secondary_target] = secondary_target_hash unless secondary_target_hash.nil?
47
- return event
48
19
  end
49
20
  end
50
21
  end
@@ -1,49 +1,53 @@
1
+ require 'faraday'
1
2
  require 'openssl'
3
+ require 'json'
2
4
 
3
5
  require_relative '../helper'
4
6
 
5
7
  module FastlaneCore
6
8
  class AnalyticsIngesterClient
7
- def post_events(events)
8
- unless Helper.test?
9
- Thread.new do
10
- send_request(json: { analytics: events }.to_json)
11
- end
9
+ GA_URL = "https://www.google-analytics.com"
10
+
11
+ private_constant :GA_URL
12
+
13
+ def initialize(ga_tracking)
14
+ @ga_tracking = ga_tracking
15
+ end
16
+
17
+ def post_event(event)
18
+ # If our users want to opt out of usage metrics, don't post the events.
19
+ # Learn more at https://docs.fastlane.tools/#metrics
20
+ if Helper.test? || FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
21
+ return nil
22
+ end
23
+ return Thread.new do
24
+ send_request(event)
12
25
  end
13
- return true
14
26
  end
15
27
 
16
- def send_request(json: nil, retries: 2)
17
- post_request(body: json)
28
+ def send_request(event, retries: 2)
29
+ post_request(event)
18
30
  rescue
19
31
  retries -= 1
20
32
  retry if retries >= 0
21
33
  end
22
34
 
23
- def post_request(body: nil)
24
- if ENV['METRICS_DEBUG']
25
- write_json(body)
26
- end
27
- url = ENV["FASTLANE_METRICS_URL"] || "https://fastlane-metrics.fabric.io"
28
-
29
- require 'faraday'
30
- connection = Faraday.new(url) do |conn|
35
+ def post_request(event)
36
+ connection = Faraday.new(GA_URL) do |conn|
37
+ conn.request(:url_encoded)
31
38
  conn.adapter(Faraday.default_adapter)
32
- if ENV['METRICS_DEBUG']
33
- conn.proxy = "https://127.0.0.1:8888"
34
- conn.ssl[:verify_mode] = OpenSSL::SSL::VERIFY_NONE
35
- end
36
- end
37
- connection.post do |req|
38
- req.url('/public')
39
- req.headers['Content-Type'] = 'application/json'
40
- req.body = body
41
39
  end
42
- end
43
-
44
- # This method is only for debugging purposes
45
- def write_json(body)
46
- File.write("#{ENV['HOME']}/Desktop/mock_analytics-#{Time.now.to_i}.json", body)
40
+ connection.headers[:user_agent] = 'fastlane/' + Fastlane::VERSION
41
+ connection.post("/collect", {
42
+ v: "1", # API Version
43
+ tid: @ga_tracking, # Tracking ID / Property ID
44
+ cid: event[:client_id], # Client ID
45
+ t: "event", # Event hit type
46
+ ec: event[:category], # Event category
47
+ ea: event[:action], # Event action
48
+ el: event[:label] || "na", # Event label
49
+ ev: event[:value] || "0" # Event value
50
+ })
47
51
  end
48
52
  end
49
53
  end
@@ -4,204 +4,44 @@ require_relative 'analytics_event_builder'
4
4
 
5
5
  module FastlaneCore
6
6
  class AnalyticsSession
7
+ GA_TRACKING = "UA-121171860-1"
8
+
9
+ private_constant :GA_TRACKING
7
10
  attr_accessor :session_id
8
11
  attr_accessor :client
9
- attr_accessor :events
10
- attr_accessor :fastfile_id
11
- attr_accessor :is_fastfile
12
- alias fastfile? is_fastfile
13
-
14
- # make this a method so that we can override it in monkey patches
15
- def oauth_app_name
16
- return 'fastlane_v2'
17
- end
18
12
 
19
- def initialize(analytics_ingester_client: AnalyticsIngesterClient.new)
13
+ def initialize(analytics_ingester_client: AnalyticsIngesterClient.new(GA_TRACKING))
20
14
  require 'securerandom'
21
15
  @session_id = SecureRandom.uuid
22
16
  @client = analytics_ingester_client
23
- @events = []
24
- @is_fastfile = false
25
- end
26
-
27
- def backfill_p_hashes(p_hash: nil)
28
- return if p_hash.nil? || p_hash == ActionLaunchContext::UNKNOWN_P_HASH || @events.count == 0
29
- @events.reverse_each do |event|
30
- # event[:actor][:name] is the field in which we store the p_hash
31
- # to be sent to analytics ingester.
32
- # If they are nil, we want to fill them in until we reach
33
- # an event that already has a p_hash.
34
- if event[:actor][:name].nil? || event[:actor][:name] == ActionLaunchContext::UNKNOWN_P_HASH
35
- event[:actor][:name] = p_hash
36
- else
37
- break
38
- end
39
- end
17
+ @threads = []
18
+ @launch_event_sent = false
40
19
  end
41
20
 
42
21
  def action_launched(launch_context: nil)
43
- backfill_p_hashes(p_hash: launch_context.p_hash)
22
+ if @launch_event_sent || launch_context.p_hash.nil?
23
+ return
24
+ end
44
25
 
26
+ @launch_event_sent = true
45
27
  builder = AnalyticsEventBuilder.new(
46
- oauth_app_name: oauth_app_name,
47
28
  p_hash: launch_context.p_hash,
48
29
  session_id: session_id,
49
- action_name: launch_context.action_name
50
- )
51
-
52
- @events << builder.launched_event(
53
- primary_target_hash: {
54
- name: 'fastlane_version',
55
- detail: fastlane_version
56
- }
57
- )
58
-
59
- @events << builder.launched_event(
60
- primary_target_hash: {
61
- name: 'configuration_language',
62
- detail: launch_context.configuration_language
63
- }
64
- )
65
-
66
- @events << builder.launched_event(
67
- primary_target_hash: {
68
- name: 'install_method',
69
- detail: install_method
70
- }
71
- )
72
-
73
- @events << builder.launched_event(
74
- primary_target_hash: {
75
- name: 'operating_system',
76
- detail: operating_system
77
- },
78
- secondary_target_hash: {
79
- name: 'version',
80
- detail: operating_system_version
81
- }
82
- )
83
-
84
- @events << builder.launched_event(
85
- primary_target_hash: {
86
- name: 'build_tool_version',
87
- detail: launch_context.build_tool_version
88
- }
89
- )
90
-
91
- @events << builder.launched_event(
92
- primary_target_hash: {
93
- name: 'ci',
94
- detail: ci?.to_s
95
- }
96
- )
97
-
98
- @events << builder.launched_event(
99
- primary_target_hash: {
100
- name: 'fastfile',
101
- detail: fastfile?.to_s
102
- },
103
- secondary_target_hash: {
104
- name: 'fastfile_id',
105
- detail: fastfile_id.to_s
106
- }
30
+ action_name: nil
107
31
  )
108
32
 
109
- @events << builder.launched_event(
110
- primary_target_hash: {
111
- name: 'platform',
112
- detail: launch_context.platform.to_s
113
- }
114
- )
115
-
116
- @events << builder.launched_event(
117
- primary_target_hash: {
118
- name: 'ruby_version',
119
- detail: ruby_version
120
- }
121
- )
122
- end
123
-
124
- def is_fastfile=(value)
125
- if value
126
- # If true, update all of the events to reflect
127
- # that the execution is running within a Fastfile context.
128
- # We don't want to update if this is false because once we
129
- # detect a true value, that is the one to be trusted
130
- @events.reverse_each do |event|
131
- event[:primary_target][:name] == 'fastfile' ? event[:primary_target][:detail] = value.to_s : next
132
- end
33
+ launch_event = builder.new_event(:launch)
34
+ post_thread = client.post_event(launch_event)
35
+ unless post_thread.nil?
36
+ @threads << post_thread
133
37
  end
134
- @is_fastfile = value
135
38
  end
136
39
 
137
40
  def action_completed(completion_context: nil)
138
- backfill_p_hashes(p_hash: completion_context.p_hash)
139
-
140
- builder = AnalyticsEventBuilder.new(
141
- oauth_app_name: oauth_app_name,
142
- p_hash: completion_context.p_hash,
143
- session_id: session_id,
144
- action_name: completion_context.action_name
145
- )
146
-
147
- @events << builder.completed_event(
148
- primary_target_hash: {
149
- name: 'status',
150
- detail: completion_context.status
151
- }
152
- )
153
41
  end
154
42
 
155
43
  def finalize_session
156
- # If our users want to opt out of usage metrics, don't post the events.
157
- # Learn more at https://docs.fastlane.tools/#metrics
158
- return if FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE")
159
-
160
- client.post_events(@events)
161
- end
162
-
163
- def fastlane_version
164
- return Fastlane::VERSION
165
- end
166
-
167
- def ruby_version
168
- patch_level = RUBY_PATCHLEVEL == 0 ? nil : "p#{RUBY_PATCHLEVEL}"
169
- return "#{RUBY_VERSION}#{patch_level}"
170
- end
171
-
172
- def operating_system
173
- return Helper.operating_system
174
- end
175
-
176
- def install_method
177
- if Helper.rubygems?
178
- return 'gem'
179
- elsif Helper.bundler?
180
- return 'bundler'
181
- elsif Helper.mac_app?
182
- return 'mac_app'
183
- elsif Helper.contained_fastlane?
184
- return 'standalone'
185
- elsif Helper.homebrew?
186
- return 'homebrew'
187
- else
188
- return 'unknown'
189
- end
190
- end
191
-
192
- def ci?
193
- return Helper.ci?
194
- end
195
-
196
- def operating_system_version
197
- os = self.operating_system
198
- case os
199
- when "macOS"
200
- return system('sw_vers', out: File::NULL) ? `sw_vers -productVersion`.strip : 'unknown'
201
- else
202
- # Need to test in Windows and Linux... not sure this is enough
203
- return Gem::Platform.local.version
204
- end
44
+ @threads.map(&:join)
205
45
  end
206
46
  end
207
47
  end
@@ -31,7 +31,7 @@ module FastlaneCore
31
31
  # Use the `FASTLANE_OPT_OUT_USAGE` variable to opt out
32
32
  # The resulting value is e.g. ce12f8371df11ef6097a83bdf2303e4357d6f5040acc4f76019489fa5deeae0d
33
33
  def generate_p_hash(app_id)
34
- unless !FastlaneCore::Env.truthy?("FASTLANE_OPT_OUT_USAGE") && !app_id.nil?
34
+ if app_id.nil?
35
35
  return nil
36
36
  end
37
37
 
@@ -47,7 +47,7 @@ module FastlaneCore
47
47
  end
48
48
 
49
49
  def report_status(build: nil)
50
- # Due to iTunes Connect, builds disappear from the build list altogether
50
+ # Due to App Store Connect, builds disappear from the build list altogether
51
51
  # after they finished processing. Before returning this build, we have to
52
52
  # wait for the build to appear in the build list again
53
53
  # As this method is very often used to wait for a build, and then do something
@@ -59,7 +59,7 @@ module FastlaneCore
59
59
  elsif build.ready_to_submit? || build.export_compliance_missing? || build.review_rejected?
60
60
  UI.success("Successfully finished processing the build #{build.train_version} - #{build.build_version}")
61
61
  else
62
- UI.message("Waiting for iTunes Connect to finish processing the new build (#{build.train_version} - #{build.build_version})")
62
+ UI.message("Waiting for App Store Connect to finish processing the new build (#{build.train_version} - #{build.build_version})")
63
63
  end
64
64
  end
65
65
  end
@@ -47,7 +47,7 @@ module FastlaneCore
47
47
 
48
48
  if hide_output
49
49
  # Show a one time message instead
50
- UI.success("Waiting for iTunes Connect transporter to be finished.")
50
+ UI.success("Waiting for App Store Connect transporter to be finished.")
51
51
  UI.success("iTunes Transporter progress... this might take a few minutes...")
52
52
  end
53
53
 
@@ -190,11 +190,11 @@ module FastlaneCore
190
190
  unless password === /^[0-9a-zA-Z\.\$\_]*$/
191
191
  UI.error([
192
192
  "Password contains special characters, which may not be handled properly by iTMSTransporter.",
193
- "If you experience problems uploading to iTunes Connect, please consider changing your password to something with only alphanumeric characters."
193
+ "If you experience problems uploading to App Store Connect, please consider changing your password to something with only alphanumeric characters."
194
194
  ].join(' '))
195
195
  end
196
196
  # rubocop:enable Style/CaseEquality
197
- UI.error("Could not download/upload from iTunes Connect! It's probably related to your password or your internet connection.")
197
+ UI.error("Could not download/upload from App Store Connect! It's probably related to your password or your internet connection.")
198
198
  end
199
199
 
200
200
  private
@@ -334,7 +334,7 @@ module FastlaneCore
334
334
  def download(app_id, dir = nil)
335
335
  dir ||= "/tmp"
336
336
 
337
- UI.message("Going to download app metadata from iTunes Connect")
337
+ UI.message("Going to download app metadata from App Store Connect")
338
338
  command = @transporter_executor.build_download_command(@user, @password, app_id, dir, @provider_short_name)
339
339
  UI.verbose(@transporter_executor.build_download_command(@user, 'YourPassword', app_id, dir, @provider_short_name))
340
340
 
@@ -351,7 +351,7 @@ module FastlaneCore
351
351
  successful = result && File.directory?(itmsp_path)
352
352
 
353
353
  if successful
354
- UI.success("✅ Successfully downloaded the latest package from iTunes Connect to #{itmsp_path}")
354
+ UI.success("✅ Successfully downloaded the latest package from App Store Connect to #{itmsp_path}")
355
355
  else
356
356
  handle_error(@password)
357
357
  end
@@ -359,7 +359,7 @@ module FastlaneCore
359
359
  successful
360
360
  end
361
361
 
362
- # Uploads the modified package back to iTunes Connect
362
+ # Uploads the modified package back to App Store Connect
363
363
  # @param app_id [Integer] The unique App ID
364
364
  # @param dir [String] the path in which the package file is located
365
365
  # @return (Bool) True if everything worked fine
@@ -368,7 +368,7 @@ module FastlaneCore
368
368
  def upload(app_id, dir)
369
369
  actual_dir = File.join(dir, "#{app_id}.itmsp")
370
370
 
371
- UI.message("Going to upload updated app to iTunes Connect")
371
+ UI.message("Going to upload updated app to App Store Connect")
372
372
  UI.success("This might take a few minutes. Please don't interrupt the script.")
373
373
 
374
374
  command = @transporter_executor.build_upload_command(@user, @password, actual_dir, @provider_short_name)
@@ -382,7 +382,7 @@ module FastlaneCore
382
382
  end
383
383
 
384
384
  if result
385
- UI.header("Successfully uploaded package to iTunes Connect. It might take a few minutes until it's visible online.")
385
+ UI.header("Successfully uploaded package to App Store Connect. It might take a few minutes until it's visible online.")
386
386
 
387
387
  FileUtils.rm_rf(actual_dir) unless Helper.test? # we don't need the package any more, since the upload was successful
388
388
  else