fastlane 2.240.1 → 2.241.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 +57 -177
- data/bin/fastlane +4 -2
- data/credentials_manager/README.md +1 -1
- data/deliver/lib/deliver/app_screenshot.rb +0 -4
- data/deliver/lib/deliver/commands_generator.rb +1 -1
- data/deliver/lib/deliver/download_screenshots.rb +8 -1
- data/deliver/lib/deliver/sync_screenshots.rb +27 -28
- data/deliver/lib/deliver/upload_app_clip_default_experience_header_images.rb +3 -3
- data/deliver/lib/deliver/upload_metadata.rb +12 -16
- data/deliver/lib/deliver/upload_screenshots.rb +12 -14
- data/docs/README.md +25 -0
- data/fastlane/lib/assets/TeamTable.md.erb +28 -0
- data/fastlane/lib/fastlane/actions/appaloosa.rb +2 -1
- data/fastlane/lib/fastlane/actions/appium.rb +1 -1
- data/fastlane/lib/fastlane/actions/apteligent.rb +8 -1
- data/fastlane/lib/fastlane/actions/build_and_upload_to_appetize.rb +1 -1
- data/fastlane/lib/fastlane/actions/clean_build_artifacts.rb +3 -0
- data/fastlane/lib/fastlane/actions/danger.rb +5 -5
- data/fastlane/lib/fastlane/actions/docs/build_app.md +1 -2
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +1 -2
- data/fastlane/lib/fastlane/actions/docs/get_certificates.md +0 -2
- data/fastlane/lib/fastlane/actions/docs/get_push_certificate.md +1 -3
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +13 -3
- data/fastlane/lib/fastlane/actions/ensure_no_debug_code.rb +2 -2
- data/fastlane/lib/fastlane/actions/get_managed_play_store_publishing_rights.rb +1 -0
- data/fastlane/lib/fastlane/actions/github_api.rb +1 -2
- data/fastlane/lib/fastlane/actions/hg_commit_version_bump.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/increment_version_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/install_xcode_plugin.rb +16 -6
- data/fastlane/lib/fastlane/actions/lcov.rb +9 -2
- data/fastlane/lib/fastlane/actions/nexus_upload.rb +16 -4
- data/fastlane/lib/fastlane/actions/notification.rb +3 -2
- data/fastlane/lib/fastlane/actions/oclint.rb +8 -8
- data/fastlane/lib/fastlane/actions/push_to_git_remote.rb +9 -4
- data/fastlane/lib/fastlane/actions/register_device.rb +1 -1
- data/fastlane/lib/fastlane/actions/say.rb +2 -4
- data/fastlane/lib/fastlane/actions/set_pod_key.rb +3 -3
- data/fastlane/lib/fastlane/actions/sonar.rb +16 -16
- data/fastlane/lib/fastlane/actions/sourcedocs.rb +8 -8
- data/fastlane/lib/fastlane/actions/splunkmint.rb +8 -1
- data/fastlane/lib/fastlane/actions/update_project_provisioning.rb +1 -1
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +5 -2
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +5 -2
- data/fastlane/lib/fastlane/actions/verify_build.rb +1 -4
- data/fastlane/lib/fastlane/actions/verify_pod_keys.rb +3 -1
- data/fastlane/lib/fastlane/actions/xcode_server_get_assets.rb +20 -19
- data/fastlane/lib/fastlane/actions/xcodebuild.rb +5 -6
- data/fastlane/lib/fastlane/actions/zip.rb +2 -1
- data/fastlane/lib/fastlane/auto_complete.rb +1 -1
- data/fastlane/lib/fastlane/cli_tools_distributor.rb +14 -0
- data/fastlane/lib/fastlane/documentation/markdown_docs_generator.rb +23 -0
- data/fastlane/lib/fastlane/environment_printer.rb +12 -25
- data/fastlane/lib/fastlane/fast_file.rb +2 -1
- data/fastlane/lib/fastlane/fastlane_require.rb +5 -1
- data/fastlane/lib/fastlane/helper/sh_helper.rb +16 -6
- data/fastlane/lib/fastlane/new_action.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_fetcher.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_info_collector.rb +1 -1
- data/fastlane/lib/fastlane/plugins/plugin_manager.rb +36 -4
- data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
- data/fastlane/lib/fastlane/plugins/template/.github/workflows/test.yml +1 -1
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +3 -7
- data/fastlane/lib/fastlane/swift_lane_manager.rb +22 -4
- data/fastlane/lib/fastlane/version.rb +3 -2
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +55 -9
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/MainProcess.swift +190 -20
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +10 -3
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +8 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
- data/fastlane/swift/formatting/Rakefile +1 -0
- data/fastlane/swift/main.swift +4 -1
- data/fastlane_core/README.md +1 -1
- data/fastlane_core/lib/fastlane_core/analytics/analytics_event_builder.rb +1 -17
- data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +11 -8
- data/fastlane_core/lib/fastlane_core/device_manager.rb +2 -2
- data/fastlane_core/lib/fastlane_core/helper.rb +34 -5
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +0 -14
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +24 -27
- data/fastlane_core/lib/fastlane_core/languages.rb +0 -1
- data/fastlane_core/lib/fastlane_core/print_table.rb +5 -2
- data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +10 -19
- data/fastlane_core/lib/fastlane_core/secrets.rb +77 -0
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +3 -3
- data/fastlane_core/lib/fastlane_core/ui/github_issue_inspector_reporter.rb +1 -1
- data/fastlane_core/lib/fastlane_core/ui/implementations/shell.rb +2 -1
- data/fastlane_core/lib/fastlane_core.rb +1 -0
- data/frameit/lib/frameit/device.rb +1 -1
- data/frameit/lib/frameit/frame_downloader.rb +2 -0
- data/frameit/lib/frameit/runner.rb +3 -2
- data/frameit/lib/frameit/screenshot.rb +0 -1
- data/gym/lib/gym/generators/build_command_generator.rb +4 -4
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +3 -3
- data/gym/lib/gym/runner.rb +1 -1
- data/internal/README.md +1 -1
- data/match/lib/match/generator.rb +1 -0
- data/match/lib/match/options.rb +13 -5
- data/match/lib/match/storage/git_storage.rb +43 -7
- data/match/lib/match/storage/gitlab/secure_file.rb +2 -1
- data/pem/lib/pem/module.rb +0 -4
- data/precheck/lib/precheck/rule_processor.rb +1 -0
- data/produce/lib/produce/developer_center.rb +49 -2
- data/produce/lib/produce/itunes_connect.rb +1 -1
- data/produce/lib/produce/module.rb +21 -0
- data/produce/lib/produce/options.rb +17 -0
- data/produce/lib/produce/service.rb +3 -5
- data/produce/lib/produce.rb +0 -1
- data/scan/lib/scan/options.rb +7 -0
- data/scan/lib/scan/runner.rb +1 -1
- data/scan/lib/scan/test_command_generator.rb +12 -9
- data/scan/lib/scan/test_result_parser.rb +1 -0
- data/scan/lib/scan/xcpretty_reporter_options_generator.rb +2 -2
- data/screengrab/lib/screengrab/page.html.erb +12 -7
- data/screengrab/lib/screengrab/reports_generator.rb +1 -1
- data/sigh/lib/assets/resign.sh +17 -0
- data/sigh/lib/sigh/local_manage.rb +1 -1
- data/sigh/lib/sigh/options.rb +5 -0
- data/sigh/lib/sigh/resign.rb +3 -3
- data/sigh/lib/sigh/runner.rb +6 -1
- data/snapshot/lib/snapshot/page.html.erb +17 -12
- data/snapshot/lib/snapshot/reports_generator.rb +1 -1
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +1 -1
- data/snapshot/lib/snapshot.rb +0 -2
- data/spaceship/README.md +2 -3
- data/spaceship/lib/spaceship/base.rb +3 -1
- data/spaceship/lib/spaceship/client.rb +65 -47
- data/spaceship/lib/spaceship/connect_api/models/bundle_id.rb +13 -2
- data/spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb +6 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -5
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +25 -0
- data/spaceship/lib/spaceship/du/upload_file.rb +1 -1
- data/spaceship/lib/spaceship/errors.rb +7 -1
- data/spaceship/lib/spaceship/globals.rb +2 -2
- data/spaceship/lib/spaceship/portal/merchant.rb +127 -2
- data/spaceship/lib/spaceship/portal/portal_client.rb +58 -0
- data/spaceship/lib/spaceship/portal/ui/select_team.rb +0 -2
- data/spaceship/lib/spaceship/portal/website_push.rb +8 -2
- data/spaceship/lib/spaceship/test_flight/client.rb +0 -22
- data/spaceship/lib/spaceship/test_flight.rb +0 -1
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +11 -0
- data/supply/lib/supply/options.rb +1 -0
- data/supply/lib/supply.rb +0 -1
- metadata +54 -36
- data/produce/lib/produce/available_default_languages.rb +0 -62
- data/snapshot/lib/snapshot/screenshot_flatten.rb +0 -20
- data/snapshot/lib/snapshot/screenshot_rotate.rb +0 -36
- data/spaceship/lib/spaceship/test_flight/app_test_info.rb +0 -40
- data/supply/lib/supply/apk_listing.rb +0 -14
- /data/fastlane/lib/assets/{custom_action_template.rb → custom_action_template.rb.template} +0 -0
|
@@ -46,7 +46,7 @@ module Spaceship
|
|
|
46
46
|
# @param mac [Bool] Fetches Mac merchant if true
|
|
47
47
|
# @return (Array) Returns all merchants available for this account
|
|
48
48
|
def all(mac: false)
|
|
49
|
-
client.merchants(mac: mac).map { |merchant|
|
|
49
|
+
client.merchants(mac: mac).map { |merchant| new_with_platform(merchant, mac) }
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
# Creates a new Merchant on the Apple Dev Portal
|
|
@@ -57,7 +57,7 @@ module Spaceship
|
|
|
57
57
|
# @return (Merchant) The Merchant you just created
|
|
58
58
|
def create!(bundle_id: nil, name: nil, mac: false)
|
|
59
59
|
new_merchant = client.create_merchant!(name, bundle_id, mac: mac)
|
|
60
|
-
|
|
60
|
+
new_with_platform(new_merchant, mac)
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
# Find a specific Merchant ID based on the bundle_id
|
|
@@ -68,6 +68,131 @@ module Spaceship
|
|
|
68
68
|
merchant.bundle_id == bundle_id
|
|
69
69
|
end
|
|
70
70
|
end
|
|
71
|
+
|
|
72
|
+
# Apple does not return the platform, so we record the one that was asked for.
|
|
73
|
+
def new_with_platform(attrs, mac)
|
|
74
|
+
new(attrs).tap { |merchant| merchant.platform = mac ? 'mac' : 'ios' }
|
|
75
|
+
end
|
|
76
|
+
private :new_with_platform
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
# Represents a domain registered to an Apple Pay Merchant ID
|
|
80
|
+
class Domain < PortalBase
|
|
81
|
+
# @return (String) The identifier of this domain, provided by the Dev Portal
|
|
82
|
+
# @example
|
|
83
|
+
# "UFVN6788YA"
|
|
84
|
+
attr_accessor :domain_id
|
|
85
|
+
|
|
86
|
+
# @return (String) The domain name you registered
|
|
87
|
+
# @example
|
|
88
|
+
# "krausefx.com"
|
|
89
|
+
attr_accessor :name
|
|
90
|
+
|
|
91
|
+
# @return (String) Status of the domain verification
|
|
92
|
+
# @example
|
|
93
|
+
# "verified"
|
|
94
|
+
attr_accessor :status
|
|
95
|
+
|
|
96
|
+
# @return (String) The URL Apple expects to serve the domain association file
|
|
97
|
+
# @example
|
|
98
|
+
# "https://krausefx.com/.well-known/apple-developer-merchantid-domain-association.txt"
|
|
99
|
+
attr_accessor :path
|
|
100
|
+
|
|
101
|
+
# @return (Bool) Can this domain be verified by the current team?
|
|
102
|
+
attr_accessor :can_verify
|
|
103
|
+
|
|
104
|
+
# @return (String) The date this domain's verification expires
|
|
105
|
+
# @example
|
|
106
|
+
# "2026-10-11"
|
|
107
|
+
attr_accessor :expiration_date
|
|
108
|
+
|
|
109
|
+
# @return (String) A human readable version of the expiration date
|
|
110
|
+
# @example
|
|
111
|
+
# "Oct 11, 2026"
|
|
112
|
+
attr_accessor :expiration_date_string
|
|
113
|
+
|
|
114
|
+
# @return (Spaceship::Portal::Merchant) The merchant this domain is registered to
|
|
115
|
+
# This is not part of Apple's response, it gets passed in by whoever fetched the domain
|
|
116
|
+
attr_accessor :merchant
|
|
117
|
+
|
|
118
|
+
attr_mapping(
|
|
119
|
+
'displayId' => :domain_id,
|
|
120
|
+
'name' => :name,
|
|
121
|
+
'status' => :status,
|
|
122
|
+
'path' => :path,
|
|
123
|
+
'canVerify' => :can_verify,
|
|
124
|
+
'expirationDate' => :expiration_date,
|
|
125
|
+
'expirationDateString' => :expiration_date_string
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
# @param attrs [Hash] The domain attributes as returned by the Dev Portal
|
|
129
|
+
# @param existing_client [Spaceship::Client] The client to use for requests
|
|
130
|
+
# @param merchant [Merchant] The merchant this domain is registered to
|
|
131
|
+
def initialize(attrs = {}, existing_client = nil, merchant: nil)
|
|
132
|
+
super(attrs, existing_client)
|
|
133
|
+
@merchant = merchant
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
class << self
|
|
137
|
+
# @param merchant [Merchant] The merchant to fetch the domains of
|
|
138
|
+
# @return (Array) Returns all domains registered to the given merchant
|
|
139
|
+
def all(merchant)
|
|
140
|
+
client.merchant_domains(merchant.merchant_id, mac: merchant.mac?).map do |domain|
|
|
141
|
+
new(domain, client, merchant: merchant)
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
# Registers a new domain for a Merchant ID on the Apple Dev Portal
|
|
146
|
+
#
|
|
147
|
+
# @param merchant [Merchant] the merchant to register the domain for
|
|
148
|
+
# @param domain_name [String] the domain name to register
|
|
149
|
+
# @return (Domain) The Domain you just registered
|
|
150
|
+
def create!(merchant: nil, domain_name: nil)
|
|
151
|
+
new_domain = client.create_merchant_domain!(merchant.merchant_id, domain_name, mac: merchant.mac?)
|
|
152
|
+
new(new_domain, client, merchant: merchant)
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
# Find a specific domain of a merchant based on the domain name
|
|
156
|
+
#
|
|
157
|
+
# @param merchant [Merchant] The merchant to search the domains of
|
|
158
|
+
# @param name [String] the domain name to look for
|
|
159
|
+
# @return (Domain) The Domain you're looking for. This is nil if the domain can't be found.
|
|
160
|
+
def find(merchant, name)
|
|
161
|
+
all(merchant).find do |domain|
|
|
162
|
+
domain.name == name
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
# Downloads the domain association file for this domain. It has to be
|
|
168
|
+
# served at `path` before Apple is able to verify the domain
|
|
169
|
+
#
|
|
170
|
+
# @return (String) The url-safe base64 encoded contents of the file
|
|
171
|
+
def verification_file
|
|
172
|
+
client.merchant_domain_get_verification_file(domain_id, mac: merchant.mac?)
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
# Asks Apple to verify this domain. The `verification_file` has to be
|
|
176
|
+
# served at `path` before calling this
|
|
177
|
+
#
|
|
178
|
+
# @return (Hash) The response of the Dev Portal
|
|
179
|
+
def verify
|
|
180
|
+
client.merchant_domain_verify(domain_id, mac: merchant.mac?)
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
# Delete this Domain
|
|
184
|
+
# @return (Domain) The domain you just deleted
|
|
185
|
+
def delete!
|
|
186
|
+
client.delete_merchant_domain!(domain_id, merchant.merchant_id, mac: merchant.mac?)
|
|
187
|
+
self
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
# @return (Array of Spaceship::Portal::Merchant::Domain) The domains registered to this merchant
|
|
192
|
+
def domains
|
|
193
|
+
@domains ||= client.merchant_domains(merchant_id, mac: mac?).map do |domain|
|
|
194
|
+
Domain.new(domain, client, merchant: self)
|
|
195
|
+
end
|
|
71
196
|
end
|
|
72
197
|
|
|
73
198
|
# Delete this Merchant
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
require 'base64'
|
|
2
|
+
|
|
1
3
|
require_relative '../client'
|
|
2
4
|
|
|
3
5
|
require_relative 'app'
|
|
@@ -344,6 +346,62 @@ module Spaceship
|
|
|
344
346
|
end
|
|
345
347
|
end
|
|
346
348
|
|
|
349
|
+
def merchant_domains(merchant_id, mac: false)
|
|
350
|
+
r = request(:post, "account/#{platform_slug(mac)}/identifiers/listDomainsForMerchant", {
|
|
351
|
+
merchantId: merchant_id,
|
|
352
|
+
teamId: team_id
|
|
353
|
+
})
|
|
354
|
+
parse_response(r, 'domainList')
|
|
355
|
+
end
|
|
356
|
+
|
|
357
|
+
def merchant_domain_get_verification_file(domain_id, mac: false)
|
|
358
|
+
r = request(:get, "account/#{platform_slug(mac)}/identifiers/downloadDomainVerificationFile", {
|
|
359
|
+
teamId: team_id,
|
|
360
|
+
domainId: domain_id
|
|
361
|
+
})
|
|
362
|
+
a = parse_response(r)
|
|
363
|
+
if r.success? && a.kind_of?(String)
|
|
364
|
+
begin
|
|
365
|
+
return a if Base64.urlsafe_decode64(a.delete("\r\n")).include?("Apple Inc.")
|
|
366
|
+
# if not valid pkcs#7 just fall through
|
|
367
|
+
rescue ArgumentError
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
raise UnexpectedResponse.new, "Couldn't download verification file, got this instead: #{a}"
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
def merchant_domain_verify(domain_id, mac: false)
|
|
374
|
+
ensure_csrf(Spaceship::Portal::Merchant)
|
|
375
|
+
|
|
376
|
+
r = request(:post, "account/#{platform_slug(mac)}/identifiers/verifyDomain", {
|
|
377
|
+
domainId: domain_id,
|
|
378
|
+
teamId: team_id
|
|
379
|
+
})
|
|
380
|
+
parse_response(r)
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
def create_merchant_domain!(merchant_id, domain_name, mac: false)
|
|
384
|
+
ensure_csrf(Spaceship::Portal::Merchant)
|
|
385
|
+
|
|
386
|
+
r = request(:post, "account/#{platform_slug(mac)}/identifiers/registerDomain", {
|
|
387
|
+
domainName: domain_name,
|
|
388
|
+
merchantId: merchant_id,
|
|
389
|
+
teamId: team_id
|
|
390
|
+
})
|
|
391
|
+
parse_response(r, 'domainList').first
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
def delete_merchant_domain!(domain_id, merchant_id, mac: false)
|
|
395
|
+
ensure_csrf(Spaceship::Portal::Merchant)
|
|
396
|
+
|
|
397
|
+
r = request(:post, "account/#{platform_slug(mac)}/identifiers/removeDomain", {
|
|
398
|
+
merchantId: merchant_id,
|
|
399
|
+
domainId: domain_id,
|
|
400
|
+
teamId: team_id
|
|
401
|
+
})
|
|
402
|
+
parse_response(r)
|
|
403
|
+
end
|
|
404
|
+
|
|
347
405
|
def create_merchant!(name, bundle_id, mac: false)
|
|
348
406
|
ensure_csrf(Spaceship::Portal::Merchant)
|
|
349
407
|
|
|
@@ -31,7 +31,6 @@ module Spaceship
|
|
|
31
31
|
# {...}
|
|
32
32
|
# ]
|
|
33
33
|
|
|
34
|
-
# rubocop:disable Require/MissingRequireStatement
|
|
35
34
|
def self.ci?
|
|
36
35
|
if Object.const_defined?("FastlaneCore") && FastlaneCore.const_defined?("Helper")
|
|
37
36
|
return FastlaneCore::Helper.ci?
|
|
@@ -45,7 +44,6 @@ module Spaceship
|
|
|
45
44
|
end
|
|
46
45
|
return true
|
|
47
46
|
end
|
|
48
|
-
# rubocop:enable Require/MissingRequireStatement
|
|
49
47
|
|
|
50
48
|
def select_team(team_id: nil, team_name: nil)
|
|
51
49
|
teams = client.teams
|
|
@@ -48,7 +48,7 @@ module Spaceship
|
|
|
48
48
|
# @param mac [Bool] Fetches Mac website push if true
|
|
49
49
|
# @return (Array) Returns all website push available for this account
|
|
50
50
|
def all(mac: false)
|
|
51
|
-
client.website_push(mac: mac).map { |website_push|
|
|
51
|
+
client.website_push(mac: mac).map { |website_push| new_with_platform(website_push, mac) }
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
# Creates a new Website Push ID on the Apple Dev Portal
|
|
@@ -59,7 +59,7 @@ module Spaceship
|
|
|
59
59
|
# @return (Website Push) The Website Push you just created
|
|
60
60
|
def create!(bundle_id: nil, name: nil, mac: false)
|
|
61
61
|
new_website_push = client.create_website_push!(name, bundle_id, mac: mac)
|
|
62
|
-
|
|
62
|
+
new_with_platform(new_website_push, mac)
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
# Find a specific Website Push ID based on the bundle_id
|
|
@@ -70,6 +70,12 @@ module Spaceship
|
|
|
70
70
|
website_push.bundle_id == bundle_id
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
|
+
|
|
74
|
+
# Apple does not return the platform, so we record the one that was asked for.
|
|
75
|
+
def new_with_platform(attrs, mac)
|
|
76
|
+
new(attrs).tap { |website_push| website_push.platform = mac ? 'mac' : 'ios' }
|
|
77
|
+
end
|
|
78
|
+
private :new_with_platform
|
|
73
79
|
end
|
|
74
80
|
|
|
75
81
|
# Delete this Website Push ID.
|
|
@@ -286,28 +286,6 @@ module Spaceship
|
|
|
286
286
|
handle_response(response)
|
|
287
287
|
end
|
|
288
288
|
|
|
289
|
-
##
|
|
290
|
-
# @!group AppTestInfo
|
|
291
|
-
##
|
|
292
|
-
|
|
293
|
-
def get_app_test_info(app_id: nil)
|
|
294
|
-
assert_required_params(__method__, binding)
|
|
295
|
-
|
|
296
|
-
response = request(:get, "providers/#{team_id}/apps/#{app_id}/testInfo")
|
|
297
|
-
handle_response(response)
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
def put_app_test_info(app_id: nil, app_test_info: nil)
|
|
301
|
-
assert_required_params(__method__, binding)
|
|
302
|
-
|
|
303
|
-
response = request(:put) do |req|
|
|
304
|
-
req.url("providers/#{team_id}/apps/#{app_id}/testInfo")
|
|
305
|
-
req.body = app_test_info.to_json
|
|
306
|
-
req.headers['Content-Type'] = 'application/json'
|
|
307
|
-
end
|
|
308
|
-
handle_response(response)
|
|
309
|
-
end
|
|
310
|
-
|
|
311
289
|
protected
|
|
312
290
|
|
|
313
291
|
def handle_response(response)
|
|
@@ -20,10 +20,21 @@ module Spaceship
|
|
|
20
20
|
elsif r.body.kind_of?(Hash) && r.body["trustedPhoneNumbers"].kind_of?(Array) && r.body["trustedPhoneNumbers"].first.kind_of?(Hash)
|
|
21
21
|
handle_two_factor(r)
|
|
22
22
|
else
|
|
23
|
+
raise_two_factor_service_errors!(r.body)
|
|
23
24
|
raise "Although response from Apple indicated activated Two-step Verification or Two-factor Authentication, spaceship didn't know how to handle this response: #{r.body}"
|
|
24
25
|
end
|
|
25
26
|
end
|
|
26
27
|
|
|
28
|
+
# Apple answers without any way to verify, e.g. when it cannot send the SMS code (-28248). See fastlane#29443.
|
|
29
|
+
def raise_two_factor_service_errors!(body)
|
|
30
|
+
errors = body.kind_of?(Hash) ? Array(body["serviceErrors"]) : []
|
|
31
|
+
return if errors.empty?
|
|
32
|
+
|
|
33
|
+
message = errors.map { |error| "#{error['message']} (#{error['code']})" }.join(" ")
|
|
34
|
+
message += " This Apple ID has no trusted devices: signing in to it on an Apple device adds one." if body["noTrustedDevices"]
|
|
35
|
+
raise Tunes::Error.new, "Apple could not start two-factor authentication: #{message}"
|
|
36
|
+
end
|
|
37
|
+
|
|
27
38
|
def handle_two_step(response)
|
|
28
39
|
if response.body.fetch("securityCode", {})["tooManyCodesLock"].to_s.length > 0
|
|
29
40
|
raise Tunes::Error.new, "Too many verification codes have been sent. Enter the last code you received, use one of your devices, or try again later."
|
|
@@ -108,6 +108,7 @@ module Supply
|
|
|
108
108
|
conflicting_options: [:issuer, :key, :json_key],
|
|
109
109
|
optional: true,
|
|
110
110
|
description: "The raw content of a Google credentials JSON file (Application Default, Workload Identity, or Service Account), used to authenticate with Google",
|
|
111
|
+
sensitive: true,
|
|
111
112
|
code_gen_sensitive: true,
|
|
112
113
|
default_value: CredentialsManager::AppfileConfig.try_fetch_value(:json_key_data_raw),
|
|
113
114
|
default_value_dynamic: true,
|
data/supply/lib/supply.rb
CHANGED
metadata
CHANGED
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: fastlane
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.241.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
|
-
-
|
|
8
|
-
-
|
|
9
|
-
-
|
|
10
|
-
- Max Ott
|
|
11
|
-
- Stefan Natchev
|
|
7
|
+
- Maksym Grebenets
|
|
8
|
+
- Manu Wallner
|
|
9
|
+
- Jan Piotrowski
|
|
12
10
|
- Fumiya Nakamura
|
|
13
|
-
-
|
|
11
|
+
- Satoshi Namai
|
|
12
|
+
- Jimmy Dee
|
|
13
|
+
- Matthew Ellis
|
|
14
|
+
- Max Ott
|
|
15
|
+
- Łukasz Grabowski
|
|
14
16
|
- Iulian Onofrei
|
|
15
|
-
- Joshua Liebowitz
|
|
16
|
-
- Andrew McBurney
|
|
17
17
|
- Olivier Halligon
|
|
18
|
-
- Daniel Jankowski
|
|
19
|
-
- Felix Krause
|
|
20
|
-
- Matthew Ellis
|
|
21
18
|
- Jérôme Lacoste
|
|
19
|
+
- Helmut Januschka
|
|
20
|
+
- Daniel Jankowski
|
|
21
|
+
- Andrew McBurney
|
|
22
|
+
- Jorge Revuelta H
|
|
23
|
+
- Aaron Brager
|
|
24
|
+
- Josh Holtz
|
|
25
|
+
- Connor Tumbleson
|
|
26
|
+
- Stefan Natchev
|
|
27
|
+
- Luka Mirosevic
|
|
22
28
|
- Manish Rathi
|
|
23
29
|
- Roger Oba
|
|
24
|
-
- Satoshi Namai
|
|
25
|
-
- Łukasz Grabowski
|
|
26
|
-
- Manu Wallner
|
|
27
30
|
- Kohki Miki
|
|
28
|
-
-
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
- Jorge Revuelta H
|
|
32
|
-
- Jan Piotrowski
|
|
33
|
-
- Connor Tumbleson
|
|
31
|
+
- Felix Krause
|
|
32
|
+
- Joshua Liebowitz
|
|
33
|
+
- Danielle Tomlinson
|
|
34
34
|
bindir: bin
|
|
35
35
|
cert_chain: []
|
|
36
36
|
date: 1980-01-02 00:00:00.000000000 Z
|
|
@@ -211,13 +211,33 @@ dependencies:
|
|
|
211
211
|
- - "<"
|
|
212
212
|
- !ruby/object:Gem::Version
|
|
213
213
|
version: '4.0'
|
|
214
|
+
- !ruby/object:Gem::Dependency
|
|
215
|
+
name: erb
|
|
216
|
+
requirement: !ruby/object:Gem::Requirement
|
|
217
|
+
requirements:
|
|
218
|
+
- - ">="
|
|
219
|
+
- !ruby/object:Gem::Version
|
|
220
|
+
version: '4.0'
|
|
221
|
+
- - "<"
|
|
222
|
+
- !ruby/object:Gem::Version
|
|
223
|
+
version: '7.0'
|
|
224
|
+
type: :runtime
|
|
225
|
+
prerelease: false
|
|
226
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
227
|
+
requirements:
|
|
228
|
+
- - ">="
|
|
229
|
+
- !ruby/object:Gem::Version
|
|
230
|
+
version: '4.0'
|
|
231
|
+
- - "<"
|
|
232
|
+
- !ruby/object:Gem::Version
|
|
233
|
+
version: '7.0'
|
|
214
234
|
- !ruby/object:Gem::Dependency
|
|
215
235
|
name: excon
|
|
216
236
|
requirement: !ruby/object:Gem::Requirement
|
|
217
237
|
requirements:
|
|
218
238
|
- - ">="
|
|
219
239
|
- !ruby/object:Gem::Version
|
|
220
|
-
version: 0.
|
|
240
|
+
version: 1.0.0
|
|
221
241
|
- - "<"
|
|
222
242
|
- !ruby/object:Gem::Version
|
|
223
243
|
version: 2.0.0
|
|
@@ -227,7 +247,7 @@ dependencies:
|
|
|
227
247
|
requirements:
|
|
228
248
|
- - ">="
|
|
229
249
|
- !ruby/object:Gem::Version
|
|
230
|
-
version: 0.
|
|
250
|
+
version: 1.0.0
|
|
231
251
|
- - "<"
|
|
232
252
|
- !ruby/object:Gem::Version
|
|
233
253
|
version: 2.0.0
|
|
@@ -392,7 +412,7 @@ dependencies:
|
|
|
392
412
|
version: 1.6.0
|
|
393
413
|
- - "<"
|
|
394
414
|
- !ruby/object:Gem::Version
|
|
395
|
-
version: 2.
|
|
415
|
+
version: 2.5.0
|
|
396
416
|
type: :runtime
|
|
397
417
|
prerelease: false
|
|
398
418
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -402,7 +422,7 @@ dependencies:
|
|
|
402
422
|
version: 1.6.0
|
|
403
423
|
- - "<"
|
|
404
424
|
- !ruby/object:Gem::Version
|
|
405
|
-
version: 2.
|
|
425
|
+
version: 2.5.0
|
|
406
426
|
- !ruby/object:Gem::Dependency
|
|
407
427
|
name: google-cloud-storage
|
|
408
428
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -627,20 +647,20 @@ dependencies:
|
|
|
627
647
|
requirements:
|
|
628
648
|
- - ">="
|
|
629
649
|
- !ruby/object:Gem::Version
|
|
630
|
-
version:
|
|
650
|
+
version: 3.1.0
|
|
631
651
|
- - "<"
|
|
632
652
|
- !ruby/object:Gem::Version
|
|
633
|
-
version:
|
|
653
|
+
version: 4.0.0
|
|
634
654
|
type: :runtime
|
|
635
655
|
prerelease: false
|
|
636
656
|
version_requirements: !ruby/object:Gem::Requirement
|
|
637
657
|
requirements:
|
|
638
658
|
- - ">="
|
|
639
659
|
- !ruby/object:Gem::Version
|
|
640
|
-
version:
|
|
660
|
+
version: 3.1.0
|
|
641
661
|
- - "<"
|
|
642
662
|
- !ruby/object:Gem::Version
|
|
643
|
-
version:
|
|
663
|
+
version: 4.0.0
|
|
644
664
|
- !ruby/object:Gem::Dependency
|
|
645
665
|
name: terminal-table
|
|
646
666
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -969,6 +989,7 @@ files:
|
|
|
969
989
|
- deliver/lib/deliver/upload_metadata.rb
|
|
970
990
|
- deliver/lib/deliver/upload_price_tier.rb
|
|
971
991
|
- deliver/lib/deliver/upload_screenshots.rb
|
|
992
|
+
- docs/README.md
|
|
972
993
|
- fastlane/README.md
|
|
973
994
|
- fastlane/lib/assets/ActionDetails.md.erb
|
|
974
995
|
- fastlane/lib/assets/Actions.md.erb
|
|
@@ -977,11 +998,12 @@ files:
|
|
|
977
998
|
- fastlane/lib/assets/AppfileTemplateAndroid
|
|
978
999
|
- fastlane/lib/assets/DefaultFastfileTemplate
|
|
979
1000
|
- fastlane/lib/assets/DefaultFastfileTemplate.swift
|
|
1001
|
+
- fastlane/lib/assets/TeamTable.md.erb
|
|
980
1002
|
- fastlane/lib/assets/completions/completion.bash
|
|
981
1003
|
- fastlane/lib/assets/completions/completion.fish
|
|
982
1004
|
- fastlane/lib/assets/completions/completion.sh
|
|
983
1005
|
- fastlane/lib/assets/completions/completion.zsh
|
|
984
|
-
- fastlane/lib/assets/custom_action_template.rb
|
|
1006
|
+
- fastlane/lib/assets/custom_action_template.rb.template
|
|
985
1007
|
- fastlane/lib/assets/mailgun_html_template.erb
|
|
986
1008
|
- fastlane/lib/assets/report_template.xml.erb
|
|
987
1009
|
- fastlane/lib/assets/s3_html_template.erb
|
|
@@ -1409,6 +1431,7 @@ files:
|
|
|
1409
1431
|
- fastlane_core/lib/fastlane_core/project.rb
|
|
1410
1432
|
- fastlane_core/lib/fastlane_core/provisioning_profile.rb
|
|
1411
1433
|
- fastlane_core/lib/fastlane_core/queue_worker.rb
|
|
1434
|
+
- fastlane_core/lib/fastlane_core/secrets.rb
|
|
1412
1435
|
- fastlane_core/lib/fastlane_core/string_filters.rb
|
|
1413
1436
|
- fastlane_core/lib/fastlane_core/swag.rb
|
|
1414
1437
|
- fastlane_core/lib/fastlane_core/tag_version.rb
|
|
@@ -1547,7 +1570,6 @@ files:
|
|
|
1547
1570
|
- precheck/lib/precheck/runner.rb
|
|
1548
1571
|
- produce/README.md
|
|
1549
1572
|
- produce/lib/produce.rb
|
|
1550
|
-
- produce/lib/produce/available_default_languages.rb
|
|
1551
1573
|
- produce/lib/produce/cloud_container.rb
|
|
1552
1574
|
- produce/lib/produce/commands_generator.rb
|
|
1553
1575
|
- produce/lib/produce/developer_center.rb
|
|
@@ -1621,8 +1643,6 @@ files:
|
|
|
1621
1643
|
- snapshot/lib/snapshot/reports_generator.rb
|
|
1622
1644
|
- snapshot/lib/snapshot/reset_simulators.rb
|
|
1623
1645
|
- snapshot/lib/snapshot/runner.rb
|
|
1624
|
-
- snapshot/lib/snapshot/screenshot_flatten.rb
|
|
1625
|
-
- snapshot/lib/snapshot/screenshot_rotate.rb
|
|
1626
1646
|
- snapshot/lib/snapshot/setup.rb
|
|
1627
1647
|
- snapshot/lib/snapshot/simulator_launchers/launcher_configuration.rb
|
|
1628
1648
|
- snapshot/lib/snapshot/simulator_launchers/simulator_launcher.rb
|
|
@@ -1766,7 +1786,6 @@ files:
|
|
|
1766
1786
|
- spaceship/lib/spaceship/spaceauth_runner.rb
|
|
1767
1787
|
- spaceship/lib/spaceship/stats_middleware.rb
|
|
1768
1788
|
- spaceship/lib/spaceship/test_flight.rb
|
|
1769
|
-
- spaceship/lib/spaceship/test_flight/app_test_info.rb
|
|
1770
1789
|
- spaceship/lib/spaceship/test_flight/base.rb
|
|
1771
1790
|
- spaceship/lib/spaceship/test_flight/beta_review_info.rb
|
|
1772
1791
|
- spaceship/lib/spaceship/test_flight/build.rb
|
|
@@ -1834,7 +1853,6 @@ files:
|
|
|
1834
1853
|
- spaceship/lib/spaceship/upgrade_2fa_later_client.rb
|
|
1835
1854
|
- supply/README.md
|
|
1836
1855
|
- supply/lib/supply.rb
|
|
1837
|
-
- supply/lib/supply/apk_listing.rb
|
|
1838
1856
|
- supply/lib/supply/client.rb
|
|
1839
1857
|
- supply/lib/supply/commands_generator.rb
|
|
1840
1858
|
- supply/lib/supply/generated_universal_apk.rb
|
|
@@ -1896,7 +1914,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
1896
1914
|
requirements:
|
|
1897
1915
|
- - ">="
|
|
1898
1916
|
- !ruby/object:Gem::Version
|
|
1899
|
-
version:
|
|
1917
|
+
version: 3.2.0
|
|
1900
1918
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
1901
1919
|
requirements:
|
|
1902
1920
|
- - ">="
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
module Produce
|
|
2
|
-
class AvailableDefaultLanguages
|
|
3
|
-
# If you update this list, you probably also have to update these files:
|
|
4
|
-
# - fastlane_core/lib/fastlane_core/languages.rb
|
|
5
|
-
# - spaceship/lib/assets/languageMapping.json
|
|
6
|
-
# See this pull request for example: https://github.com/fastlane/fastlane/pull/14110
|
|
7
|
-
def self.all_languages
|
|
8
|
-
[
|
|
9
|
-
"Arabic",
|
|
10
|
-
"Bangla",
|
|
11
|
-
"Catalan",
|
|
12
|
-
"Croatian",
|
|
13
|
-
"Czech",
|
|
14
|
-
"Brazilian Portuguese",
|
|
15
|
-
"Danish",
|
|
16
|
-
"Dutch",
|
|
17
|
-
"English",
|
|
18
|
-
"English_Australian",
|
|
19
|
-
"English_CA",
|
|
20
|
-
"English_UK",
|
|
21
|
-
"Finnish",
|
|
22
|
-
"French",
|
|
23
|
-
"French_CA",
|
|
24
|
-
"German",
|
|
25
|
-
"Greek",
|
|
26
|
-
"Gujarati",
|
|
27
|
-
"Hebrew",
|
|
28
|
-
"Hindi",
|
|
29
|
-
"Hungarian",
|
|
30
|
-
"Indonesian",
|
|
31
|
-
"Italian",
|
|
32
|
-
"Japanese",
|
|
33
|
-
"Kannada",
|
|
34
|
-
"Korean",
|
|
35
|
-
"Malayalam",
|
|
36
|
-
"Malay",
|
|
37
|
-
"Marathi",
|
|
38
|
-
"Norwegian",
|
|
39
|
-
"Odia",
|
|
40
|
-
"Polish",
|
|
41
|
-
"Portuguese",
|
|
42
|
-
"Punjabi",
|
|
43
|
-
"Romanian",
|
|
44
|
-
"Russian",
|
|
45
|
-
"Simplified Chinese",
|
|
46
|
-
"Slovak",
|
|
47
|
-
"Slovenian",
|
|
48
|
-
"Spanish",
|
|
49
|
-
"Spanish_MX",
|
|
50
|
-
"Swedish",
|
|
51
|
-
"Tamil",
|
|
52
|
-
"Telugu",
|
|
53
|
-
"Thai",
|
|
54
|
-
"Traditional Chinese",
|
|
55
|
-
"Turkish",
|
|
56
|
-
"Ukrainian",
|
|
57
|
-
"Urdu",
|
|
58
|
-
"Vietnamese"
|
|
59
|
-
]
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require_relative 'module'
|
|
2
|
-
|
|
3
|
-
module Snapshot
|
|
4
|
-
# This class takes care of removing the alpha channel of the generated screenshots
|
|
5
|
-
class ScreenshotFlatten
|
|
6
|
-
# @param (String) The path in which the screenshots are located in
|
|
7
|
-
def run(path)
|
|
8
|
-
UI.message("Removing the alpha channel from generated png files")
|
|
9
|
-
flatten(path)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def flatten(path)
|
|
13
|
-
Dir.glob([path, '/**/*.png'].join('/')).each do |file|
|
|
14
|
-
UI.verbose("Removing alpha channel from '#{file}'")
|
|
15
|
-
`sips -s format bmp '#{file}' &> /dev/null` # &> /dev/null because there is warning because of the extension
|
|
16
|
-
`sips -s format png '#{file}'`
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
require_relative 'module'
|
|
2
|
-
require 'fastlane_core/fastlane_pty'
|
|
3
|
-
|
|
4
|
-
module Snapshot
|
|
5
|
-
# This class takes care of rotating images
|
|
6
|
-
class ScreenshotRotate
|
|
7
|
-
require 'shellwords'
|
|
8
|
-
|
|
9
|
-
# @param (String) The path in which the screenshots are located in
|
|
10
|
-
def run(path)
|
|
11
|
-
UI.verbose("Rotating the screenshots (if necessary)")
|
|
12
|
-
rotate(path)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def rotate(path)
|
|
16
|
-
Dir.glob([path, '/**/*.png'].join('/')).each do |file|
|
|
17
|
-
UI.verbose("Rotating '#{file}'")
|
|
18
|
-
|
|
19
|
-
command = nil
|
|
20
|
-
if file.end_with?("landscapeleft.png")
|
|
21
|
-
command = "sips -r -90 '#{file}'"
|
|
22
|
-
elsif file.end_with?("landscaperight.png")
|
|
23
|
-
command = "sips -r 90 '#{file}'"
|
|
24
|
-
elsif file.end_with?("portrait_upsidedown.png")
|
|
25
|
-
command = "sips -r 180 '#{file}'"
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
# Only rotate if we need to
|
|
29
|
-
next unless command
|
|
30
|
-
|
|
31
|
-
# Rotate
|
|
32
|
-
FastlaneCore::CommandExecutor.execute(command: command, print_all: false, print_command: false)
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
36
|
-
end
|