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.
- checksums.yaml +4 -4
- data/README.md +70 -70
- data/credentials_manager/lib/credentials_manager/appfile_config.rb +1 -1
- data/deliver/lib/assets/DeliverfileDefault +1 -1
- data/deliver/lib/assets/DeliverfileDefault.swift +1 -1
- data/deliver/lib/assets/summary.html.erb +1 -1
- data/deliver/lib/deliver/commands_generator.rb +2 -2
- data/deliver/lib/deliver/detect_values.rb +1 -1
- data/deliver/lib/deliver/download_screenshots.rb +1 -1
- data/deliver/lib/deliver/options.rb +3 -3
- data/deliver/lib/deliver/runner.rb +9 -9
- data/deliver/lib/deliver/submit_for_review.rb +3 -3
- data/deliver/lib/deliver/upload_metadata.rb +3 -3
- data/deliver/lib/deliver/upload_screenshots.rb +2 -2
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +3 -3
- data/fastlane/lib/fastlane/actions/cocoapods.rb +1 -0
- data/fastlane/lib/fastlane/actions/create_app_online.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/check_app_store_metadata.md +3 -3
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +8 -8
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +14 -14
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +2 -2
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +7 -7
- data/fastlane/lib/fastlane/actions/github_api.rb +2 -0
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +2 -2
- data/fastlane/lib/fastlane/actions/set_changelog.rb +6 -6
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +1 -1
- data/fastlane/lib/fastlane/command_line_handler.rb +2 -2
- data/fastlane/lib/fastlane/commands_generator.rb +1 -0
- data/fastlane/lib/fastlane/fast_file.rb +8 -6
- data/fastlane/lib/fastlane/lane_manager.rb +0 -3
- data/fastlane/lib/fastlane/runner.rb +1 -9
- data/fastlane/lib/fastlane/server/socket_server.rb +4 -2
- data/fastlane/lib/fastlane/setup/setup_ios.rb +12 -12
- data/fastlane/lib/fastlane/swift_lane_manager.rb +9 -8
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Appfile.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +3 -1
- data/fastlane/swift/ControlCommand.swift +0 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +3 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +0 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/RubyCommand.swift +0 -1
- data/fastlane/swift/RubyCommandable.swift +0 -1
- data/fastlane/swift/Runner.swift +7 -7
- data/fastlane/swift/RunnerArgument.swift +0 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SocketClient.swift +0 -1
- data/fastlane/swift/SocketClientDelegateProtocol.swift +0 -1
- data/fastlane/swift/SocketResponse.swift +0 -1
- data/fastlane/swift/main.swift +2 -2
- data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +10 -39
- data/fastlane_core/lib/fastlane_core/analytics/analytics_ingester_client.rb +34 -30
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +16 -176
- data/fastlane_core/lib/fastlane_core/analytics/app_identifier_guesser.rb +1 -1
- data/fastlane_core/lib/fastlane_core/build_watcher.rb +2 -2
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +8 -8
- data/fastlane_core/lib/fastlane_core/module.rb +2 -5
- data/fastlane_core/lib/fastlane_core/ui/errors/fastlane_error.rb +0 -1
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +5 -7
- data/gym/lib/gym/detect_values.rb +23 -0
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +1 -21
- data/match/lib/match/spaceship_ensure.rb +1 -1
- data/pilot/lib/pilot/build_manager.rb +2 -2
- data/pilot/lib/pilot/manager.rb +2 -2
- data/pilot/lib/pilot/options.rb +4 -4
- data/precheck/lib/precheck/options.rb +2 -2
- data/produce/lib/produce/commands_generator.rb +1 -1
- data/produce/lib/produce/developer_center.rb +1 -1
- data/produce/lib/produce/itunes_connect.rb +6 -6
- data/produce/lib/produce/options.rb +4 -4
- data/scan/lib/scan/test_command_generator.rb +6 -2
- data/screengrab/lib/screengrab/runner.rb +2 -2
- data/sigh/lib/sigh/runner.rb +6 -1
- data/snapshot/lib/assets/SnapshotHelper.swift +0 -1
- data/snapshot/lib/assets/SnapshotHelperXcode8.swift +0 -1
- data/spaceship/README.md +3 -3
- data/spaceship/lib/spaceship.rb +1 -1
- data/spaceship/lib/spaceship/client.rb +12 -7
- data/spaceship/lib/spaceship/du/du_client.rb +1 -1
- data/spaceship/lib/spaceship/errors.rb +1 -1
- data/spaceship/lib/spaceship/module.rb +1 -1
- data/spaceship/lib/spaceship/playground.rb +3 -3
- data/spaceship/lib/spaceship/portal/portal_client.rb +2 -2
- data/spaceship/lib/spaceship/spaceauth_runner.rb +5 -5
- data/spaceship/lib/spaceship/test_flight/client.rb +12 -1
- data/spaceship/lib/spaceship/test_flight/group.rb +1 -1
- data/spaceship/lib/spaceship/test_flight/tester.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_analytics.rb +143 -0
- data/spaceship/lib/spaceship/tunes/app_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_image.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_screenshot.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_status.rb +2 -2
- data/spaceship/lib/spaceship/tunes/app_submission.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_trailer.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version.rb +6 -6
- data/spaceship/lib/spaceship/tunes/app_version_history.rb +1 -1
- data/spaceship/lib/spaceship/tunes/app_version_states_history.rb +1 -1
- data/spaceship/lib/spaceship/tunes/application.rb +15 -4
- data/spaceship/lib/spaceship/tunes/availability.rb +24 -8
- data/spaceship/lib/spaceship/tunes/b2b_user.rb +7 -2
- data/spaceship/lib/spaceship/tunes/build.rb +2 -2
- data/spaceship/lib/spaceship/tunes/build_details.rb +1 -1
- data/spaceship/lib/spaceship/tunes/build_train.rb +2 -2
- data/spaceship/lib/spaceship/tunes/errors.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap.rb +2 -2
- data/spaceship/lib/spaceship/tunes/iap_status.rb +1 -1
- data/spaceship/lib/spaceship/tunes/iap_type.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes.rb +1 -0
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +41 -13
- data/spaceship/lib/spaceship/two_step_client.rb +1 -1
- 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(
|
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(
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
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
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
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(
|
17
|
-
post_request(
|
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(
|
24
|
-
|
25
|
-
|
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
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
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
|
-
@
|
24
|
-
@
|
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
|
-
|
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:
|
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
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|
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
|