fastlane 2.160.0 → 2.165.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 +78 -78
- data/cert/lib/cert/options.rb +28 -1
- data/cert/lib/cert/runner.rb +51 -34
- data/deliver/lib/deliver/app_screenshot_iterator.rb +4 -4
- data/deliver/lib/deliver/module.rb +2 -0
- data/deliver/lib/deliver/options.rb +5 -5
- data/deliver/lib/deliver/queue_worker.rb +14 -29
- data/deliver/lib/deliver/upload_metadata.rb +20 -5
- data/deliver/lib/deliver/upload_screenshots.rb +28 -13
- data/fastlane/lib/fastlane/actions/.download_dsyms.rb.swp +0 -0
- data/fastlane/lib/fastlane/actions/actions_helper.rb +20 -1
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +39 -3
- data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +15 -1
- data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +1 -0
- data/fastlane/lib/fastlane/actions/docs/capture_android_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/create_app_online.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/run_tests.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +12 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_play_store.md +2 -2
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +1 -1
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +1 -0
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +13 -2
- data/fastlane/lib/fastlane/actions/get_certificates.rb +1 -0
- data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +1 -0
- data/fastlane/lib/fastlane/actions/import_from_git.rb +9 -1
- data/fastlane/lib/fastlane/actions/is_ci.rb +1 -1
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +15 -0
- data/fastlane/lib/fastlane/actions/register_device.rb +46 -5
- data/fastlane/lib/fastlane/actions/register_devices.rb +50 -16
- data/fastlane/lib/fastlane/actions/set_changelog.rb +31 -3
- data/fastlane/lib/fastlane/actions/sync_code_signing.rb +1 -0
- data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +3 -2
- data/fastlane/lib/fastlane/fast_file.rb +74 -23
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +4 -4
- data/fastlane/swift/Fastlane.swift +120 -27
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/LaneFileProtocol.swift +28 -36
- data/fastlane/swift/MainProcess.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +21 -5
- 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 +1 -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/main.swift +1 -1
- data/fastlane_core/lib/fastlane_core/analytics/analytics_session.rb +6 -7
- data/fastlane_core/lib/fastlane_core/device_manager.rb +8 -4
- data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
- data/fastlane_core/lib/fastlane_core/keychain_importer.rb +3 -3
- data/gym/lib/gym/generators/package_command_generator_xcode7.rb +2 -2
- data/match/lib/match/generator.rb +6 -1
- data/match/lib/match/importer.rb +63 -18
- data/match/lib/match/migrate.rb +13 -2
- data/match/lib/match/nuke.rb +65 -22
- data/match/lib/match/options.rb +34 -3
- data/match/lib/match/runner.rb +38 -10
- data/match/lib/match/spaceship_ensure.rb +27 -21
- data/match/lib/match/storage/google_cloud_storage.rb +20 -3
- data/match/lib/match/storage/s3_storage.rb +19 -3
- data/scan/lib/scan/detect_values.rb +5 -8
- data/scan/lib/scan/runner.rb +2 -1
- data/sigh/lib/assets/resign.sh +1 -1
- data/sigh/lib/sigh/download_all.rb +16 -4
- data/sigh/lib/sigh/options.rb +21 -0
- data/sigh/lib/sigh/runner.rb +83 -41
- data/snapshot/lib/assets/SnapshotHelper.swift +4 -0
- data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +2 -1
- data/spaceship/README.md +1 -1
- data/spaceship/lib/spaceship/client.rb +9 -4
- data/spaceship/lib/spaceship/connect_api.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/api_client.rb +12 -3
- data/spaceship/lib/spaceship/connect_api/client.rb +20 -7
- data/spaceship/lib/spaceship/connect_api/models/app.rb +51 -0
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot.rb +3 -1
- data/spaceship/lib/spaceship/connect_api/models/beta_tester.rb +2 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +42 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb +43 -0
- data/spaceship/lib/spaceship/connect_api/models/custom_app_user.rb +41 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +5 -0
- data/spaceship/lib/spaceship/connect_api/models/profile.rb +7 -1
- data/spaceship/lib/spaceship/connect_api/models/user_invitation.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb +45 -2
- data/spaceship/lib/spaceship/connect_api/spaceship.rb +7 -4
- data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +13 -0
- data/spaceship/lib/spaceship/connect_api/token.rb +6 -1
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +75 -1
- data/spaceship/lib/spaceship/connect_api/users/users.rb +40 -0
- data/spaceship/lib/spaceship/helper/net_http_generic_request.rb +11 -5
- data/supply/lib/supply/uploader.rb +1 -1
- metadata +19 -15
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class UserInvitation
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :first_name
|
8
|
+
attr_accessor :last_name
|
9
|
+
attr_accessor :email
|
10
|
+
attr_accessor :roles
|
11
|
+
attr_accessor :all_apps_visible
|
12
|
+
attr_accessor :provisioning_allowed
|
13
|
+
|
14
|
+
attr_mapping({
|
15
|
+
"firstName" => "first_name",
|
16
|
+
"lastName" => "last_name",
|
17
|
+
"email" => "email",
|
18
|
+
"roles" => "roles",
|
19
|
+
"allAppsVisible" => "all_apps_visible",
|
20
|
+
"provisioningAllowed" => "provisioning_allowed"
|
21
|
+
})
|
22
|
+
|
23
|
+
module UserRole
|
24
|
+
ADMIN = "ADMIN"
|
25
|
+
FINANCE = "FINANCE"
|
26
|
+
TECHNICAL = "TECHNICAL"
|
27
|
+
SALES = "SALES"
|
28
|
+
MARKETING = "MARKETING"
|
29
|
+
DEVELOPER = "DEVELOPER"
|
30
|
+
ACCOUNT_HOLDER = "ACCOUNT_HOLDER"
|
31
|
+
READ_ONLY = "READ_ONLY"
|
32
|
+
APP_MANAGER = "APP_MANAGER"
|
33
|
+
ACCESS_TO_REPORTS = "ACCESS_TO_REPORTS"
|
34
|
+
CUSTOMER_SUPPORT = "CUSTOMER_SUPPORT"
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.type
|
38
|
+
return "userInvitations"
|
39
|
+
end
|
40
|
+
|
41
|
+
#
|
42
|
+
# Managing invitations
|
43
|
+
#
|
44
|
+
|
45
|
+
def self.all(filter: {}, includes: nil, sort: nil)
|
46
|
+
resps = Spaceship::ConnectAPI.get_user_invitations(filter: filter, includes: includes, sort: sort).all_pages
|
47
|
+
return resps.flat_map(&:to_models)
|
48
|
+
end
|
49
|
+
|
50
|
+
def self.find(email: nil, includes: nil)
|
51
|
+
return all(filter: { email: email }, includes: includes)
|
52
|
+
end
|
53
|
+
|
54
|
+
def delete!
|
55
|
+
Spaceship::ConnectAPI.delete_user_invitation(user_invitation_id: id)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -36,13 +36,56 @@ module Spaceship
|
|
36
36
|
provisioning_request_client.get("certificates", params)
|
37
37
|
end
|
38
38
|
|
39
|
+
def get_certificate(certificate_id: nil, includes: nil)
|
40
|
+
params = provisioning_request_client.build_params(filter: nil, includes: includes, limit: nil, sort: nil)
|
41
|
+
provisioning_request_client.get("certificates/#{certificate_id}", params)
|
42
|
+
end
|
43
|
+
|
44
|
+
def post_certificate(attributes: {})
|
45
|
+
body = {
|
46
|
+
data: {
|
47
|
+
attributes: attributes,
|
48
|
+
type: "certificates"
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
provisioning_request_client.post("certificates", body)
|
53
|
+
end
|
54
|
+
|
55
|
+
def delete_certificate(certificate_id: nil)
|
56
|
+
raise "Certificate id is nil" if certificate_id.nil?
|
57
|
+
|
58
|
+
provisioning_request_client.delete("certificates/#{certificate_id}")
|
59
|
+
end
|
60
|
+
|
39
61
|
#
|
40
62
|
# devices
|
41
63
|
#
|
42
64
|
|
43
|
-
def get_devices(filter: {}, includes: nil, limit: nil, sort: nil)
|
65
|
+
def get_devices(profile_id: nil, filter: {}, includes: nil, limit: nil, sort: nil)
|
44
66
|
params = provisioning_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
|
45
|
-
|
67
|
+
if profile_id.nil?
|
68
|
+
provisioning_request_client.get("devices", params)
|
69
|
+
else
|
70
|
+
provisioning_request_client.get("profiles/#{profile_id}/devices", params)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def post_device(name: nil, platform: nil, udid: nil)
|
75
|
+
attributes = {
|
76
|
+
name: name,
|
77
|
+
platform: platform,
|
78
|
+
udid: udid
|
79
|
+
}
|
80
|
+
|
81
|
+
body = {
|
82
|
+
data: {
|
83
|
+
attributes: attributes,
|
84
|
+
type: "devices"
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
provisioning_request_client.post("devices", body)
|
46
89
|
end
|
47
90
|
|
48
91
|
#
|
@@ -44,20 +44,23 @@ module Spaceship
|
|
44
44
|
|
45
45
|
# Initializes client with Apple's App Store Connect JWT auth key.
|
46
46
|
#
|
47
|
-
# This method will automatically use the
|
47
|
+
# This method will automatically use the arguments from environment
|
48
48
|
# variables if not given.
|
49
49
|
#
|
50
|
-
#
|
50
|
+
# The key_id, issuer_id and either filepath or key are needed to authenticate.
|
51
51
|
#
|
52
52
|
# @param key_id (String) (optional): The key id
|
53
53
|
# @param issuer_id (String) (optional): The issuer id
|
54
54
|
# @param filepath (String) (optional): The filepath
|
55
|
+
# @param key (String) (optional): The key
|
56
|
+
# @param duration (Integer) (optional): How long this session should last
|
57
|
+
# @param in_house (Boolean) (optional): Whether this session is an Enterprise one
|
55
58
|
#
|
56
59
|
# @raise InvalidUserCredentialsError: raised if authentication failed
|
57
60
|
#
|
58
61
|
# @return (Spaceship::ConnectAPI::Client) The client the login method was called for
|
59
|
-
def auth(key_id: nil, issuer_id: nil, filepath: nil)
|
60
|
-
@client = ConnectAPI::Client.auth(key_id: key_id, issuer_id: issuer_id, filepath: filepath)
|
62
|
+
def auth(key_id: nil, issuer_id: nil, filepath: nil, key: nil, duration: nil, in_house: nil)
|
63
|
+
@client = ConnectAPI::Client.auth(key_id: key_id, issuer_id: issuer_id, filepath: filepath, key: key, duration: duration, in_house: in_house)
|
61
64
|
end
|
62
65
|
|
63
66
|
# Authenticates with Apple's web services. This method has to be called once
|
@@ -277,6 +277,19 @@ module Spaceship
|
|
277
277
|
test_flight_request_client.delete("betaTesters/#{beta_tester_id}/relationships/betaGroups", nil, body)
|
278
278
|
end
|
279
279
|
|
280
|
+
def delete_beta_testers_from_app(beta_tester_ids: [], app_id: nil)
|
281
|
+
body = {
|
282
|
+
data: beta_tester_ids.map do |id|
|
283
|
+
{
|
284
|
+
type: "betaTesters",
|
285
|
+
id: id
|
286
|
+
}
|
287
|
+
end
|
288
|
+
}
|
289
|
+
|
290
|
+
test_flight_request_client.delete("apps/#{app_id}/relationships/betaTesters", nil, body)
|
291
|
+
end
|
292
|
+
|
280
293
|
#
|
281
294
|
# betaTesterMetrics
|
282
295
|
#
|
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'jwt'
|
2
|
+
require 'base64'
|
2
3
|
require 'openssl'
|
3
4
|
|
4
5
|
# extract pem from .p8
|
@@ -39,7 +40,7 @@ module Spaceship
|
|
39
40
|
self.create(json)
|
40
41
|
end
|
41
42
|
|
42
|
-
def self.create(key_id: nil, issuer_id: nil, filepath: nil, key: nil, duration: nil, in_house: nil)
|
43
|
+
def self.create(key_id: nil, issuer_id: nil, filepath: nil, key: nil, is_key_content_base64: false, duration: nil, in_house: nil)
|
43
44
|
key_id ||= ENV['SPACESHIP_CONNECT_API_KEY_ID']
|
44
45
|
issuer_id ||= ENV['SPACESHIP_CONNECT_API_ISSUER_ID']
|
45
46
|
filepath ||= ENV['SPACESHIP_CONNECT_API_KEY_FILEPATH']
|
@@ -51,6 +52,10 @@ module Spaceship
|
|
51
52
|
key ||= ENV['SPACESHIP_CONNECT_API_KEY']
|
52
53
|
key ||= File.binread(filepath)
|
53
54
|
|
55
|
+
if !key.nil? && is_key_content_base64
|
56
|
+
key = Base64.decode64(key)
|
57
|
+
end
|
58
|
+
|
54
59
|
self.new(
|
55
60
|
key_id: key_id,
|
56
61
|
issuer_id: issuer_id,
|
@@ -185,9 +185,12 @@ module Spaceship
|
|
185
185
|
type: "apps",
|
186
186
|
id: app_id
|
187
187
|
}
|
188
|
-
data[:attributes] = attributes unless attributes.empty?
|
189
188
|
data[:relationships] = relationships unless relationships.empty?
|
190
189
|
|
190
|
+
if !attributes.nil? && !attributes.empty?
|
191
|
+
data[:attributes] = attributes
|
192
|
+
end
|
193
|
+
|
191
194
|
# Body
|
192
195
|
body = {
|
193
196
|
data: data
|
@@ -887,6 +890,77 @@ module Spaceship
|
|
887
890
|
tunes_request_client.post("appStoreVersionReleaseRequests", body)
|
888
891
|
end
|
889
892
|
|
893
|
+
#
|
894
|
+
# customAppUsers
|
895
|
+
#
|
896
|
+
|
897
|
+
def get_custom_app_users(app_id: nil, filter: nil, includes: nil, limit: nil, sort: nil)
|
898
|
+
params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
|
899
|
+
tunes_request_client.get("apps/#{app_id}/customAppUsers", params)
|
900
|
+
end
|
901
|
+
|
902
|
+
def post_custom_app_user(app_id: nil, apple_id: nil)
|
903
|
+
body = {
|
904
|
+
data: {
|
905
|
+
type: "customAppUsers",
|
906
|
+
attributes: {
|
907
|
+
appleId: apple_id
|
908
|
+
},
|
909
|
+
relationships: {
|
910
|
+
app: {
|
911
|
+
data: {
|
912
|
+
type: "apps",
|
913
|
+
id: app_id
|
914
|
+
}
|
915
|
+
}
|
916
|
+
}
|
917
|
+
}
|
918
|
+
}
|
919
|
+
|
920
|
+
tunes_request_client.post("customAppUsers", body)
|
921
|
+
end
|
922
|
+
|
923
|
+
def delete_custom_app_user(custom_app_user_id: nil)
|
924
|
+
params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
|
925
|
+
tunes_request_client.delete("customAppUsers/#{custom_app_user_id}", params)
|
926
|
+
end
|
927
|
+
|
928
|
+
#
|
929
|
+
# customOrganizationUsers
|
930
|
+
#
|
931
|
+
|
932
|
+
def get_custom_app_organization(app_id: nil, filter: nil, includes: nil, limit: nil, sort: nil)
|
933
|
+
params = tunes_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
|
934
|
+
tunes_request_client.get("apps/#{app_id}/customAppOrganizations", params)
|
935
|
+
end
|
936
|
+
|
937
|
+
def post_custom_app_organization(app_id: nil, device_enrollment_program_id: nil, name: nil)
|
938
|
+
body = {
|
939
|
+
data: {
|
940
|
+
type: "customAppOrganizations",
|
941
|
+
attributes: {
|
942
|
+
deviceEnrollmentProgramId: device_enrollment_program_id,
|
943
|
+
name: name
|
944
|
+
},
|
945
|
+
relationships: {
|
946
|
+
app: {
|
947
|
+
data: {
|
948
|
+
type: "apps",
|
949
|
+
id: app_id
|
950
|
+
}
|
951
|
+
}
|
952
|
+
}
|
953
|
+
}
|
954
|
+
}
|
955
|
+
|
956
|
+
tunes_request_client.post("customAppOrganizations", body)
|
957
|
+
end
|
958
|
+
|
959
|
+
def delete_custom_app_organization(custom_app_organization_id: nil)
|
960
|
+
params = tunes_request_client.build_params(filter: nil, includes: nil, limit: nil, sort: nil)
|
961
|
+
tunes_request_client.delete("customAppOrganizations/#{custom_app_organization_id}", params)
|
962
|
+
end
|
963
|
+
|
890
964
|
#
|
891
965
|
# idfaDeclarations
|
892
966
|
#
|
@@ -17,11 +17,18 @@ module Spaceship
|
|
17
17
|
# users
|
18
18
|
#
|
19
19
|
|
20
|
+
# Get list of users
|
20
21
|
def get_users(filter: {}, includes: nil, limit: nil, sort: nil)
|
21
22
|
params = users_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
|
22
23
|
users_request_client.get("users", params)
|
23
24
|
end
|
24
25
|
|
26
|
+
# Delete existing user
|
27
|
+
def delete_user(user_id: nil)
|
28
|
+
users_request_client.delete("users/#{user_id}")
|
29
|
+
end
|
30
|
+
|
31
|
+
# Change app permissions for user
|
25
32
|
def add_user_visible_apps(user_id: nil, app_ids: nil)
|
26
33
|
body = {
|
27
34
|
data: app_ids.map do |app_id|
|
@@ -34,6 +41,39 @@ module Spaceship
|
|
34
41
|
|
35
42
|
users_request_client.post("users/#{user_id}/relationships/visibleApps", body)
|
36
43
|
end
|
44
|
+
|
45
|
+
#
|
46
|
+
# invitations (invited users)
|
47
|
+
#
|
48
|
+
|
49
|
+
# Get all invited users (not yet accepted)
|
50
|
+
def get_user_invitations(filter: {}, includes: nil, limit: nil, sort: nil)
|
51
|
+
params = users_request_client.build_params(filter: filter, includes: includes, limit: limit, sort: sort)
|
52
|
+
users_request_client.get("userInvitations", params)
|
53
|
+
end
|
54
|
+
|
55
|
+
# Invite new users to App Store Connect
|
56
|
+
def post_user_invitation(email: nil, first_name: nil, last_name: nil, roles: [], provisioning_allowed: nil, all_apps_visible: nil)
|
57
|
+
body = {
|
58
|
+
data: {
|
59
|
+
type: "userInvitations",
|
60
|
+
attributes: {
|
61
|
+
email: email,
|
62
|
+
firstName: first_name,
|
63
|
+
lastName: last_name,
|
64
|
+
roles: roles,
|
65
|
+
provisioningAllowed: provisioning_allowed,
|
66
|
+
allAppsVisible: all_apps_visible
|
67
|
+
}
|
68
|
+
}
|
69
|
+
}
|
70
|
+
users_request_client.post("userInvitations", body)
|
71
|
+
end
|
72
|
+
|
73
|
+
# Remove invited user from team (not yet accepted)
|
74
|
+
def delete_user_invitation(user_invitation_id: nil)
|
75
|
+
users_request_client.delete("userInvitations/#{user_invitation_id}")
|
76
|
+
end
|
37
77
|
end
|
38
78
|
end
|
39
79
|
end
|
@@ -5,10 +5,16 @@ require 'net/http'
|
|
5
5
|
# Certain apple endpoints return 415 responses if a Content-Type is supplied.
|
6
6
|
# Net::HTTP will default a content-type if none is provided by faraday
|
7
7
|
# This monkey-patch allows us to leave out the content-type if we do not specify one.
|
8
|
-
module
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
module NetHTTPGenericRequestMonkeypatch
|
9
|
+
def supply_default_content_type
|
10
|
+
# Return no content type if we communicating with an apple.com domain
|
11
|
+
return if !self['host'].nil? && self['host'].end_with?('.apple.com')
|
12
|
+
|
13
|
+
# Otherwise use the default implementation
|
14
|
+
super
|
13
15
|
end
|
14
16
|
end
|
17
|
+
|
18
|
+
# We prepend the monkeypatch so the patch has access to the original implementation
|
19
|
+
# using `super`.
|
20
|
+
Net::HTTPGenericRequest.prepend(NetHTTPGenericRequestMonkeypatch)
|
@@ -111,7 +111,7 @@ module Supply
|
|
111
111
|
releases = track.releases
|
112
112
|
|
113
113
|
releases = releases.select { |r| r.status == status } if status
|
114
|
-
releases = releases.select { |r| r.version_codes.map(&:to_s).include?(version_code.to_s) } if version_code
|
114
|
+
releases = releases.select { |r| (r.version_codes || []).map(&:to_s).include?(version_code.to_s) } if version_code
|
115
115
|
|
116
116
|
if releases.size > 1
|
117
117
|
UI.user_error!("More than one release found in this track. Please specify with the :version_code option to select a release.")
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.165.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jorge Revuelta H
|
8
|
-
-
|
8
|
+
- Matthew Ellis
|
9
9
|
- Felix Krause
|
10
|
-
-
|
11
|
-
-
|
12
|
-
- Manu Wallner
|
13
|
-
- Max Ott
|
10
|
+
- Josh Holtz
|
11
|
+
- Danielle Tomlinson
|
14
12
|
- Jérôme Lacoste
|
13
|
+
- Kohki Miki
|
14
|
+
- Maksym Grebenets
|
15
|
+
- Aaron Brager
|
15
16
|
- Jimmy Dee
|
17
|
+
- Max Ott
|
16
18
|
- Luka Mirosevic
|
17
|
-
-
|
18
|
-
- Maksym Grebenets
|
19
|
-
- Josh Holtz
|
19
|
+
- Manu Wallner
|
20
20
|
- Jan Piotrowski
|
21
21
|
- Stefan Natchev
|
22
|
-
- Daniel Jankowski
|
23
|
-
- Olivier Halligon
|
24
|
-
- Danielle Tomlinson
|
25
|
-
- Fumiya Nakamura
|
26
|
-
- Aaron Brager
|
27
22
|
- Andrew McBurney
|
23
|
+
- Fumiya Nakamura
|
28
24
|
- Iulian Onofrei
|
25
|
+
- Olivier Halligon
|
26
|
+
- Joshua Liebowitz
|
27
|
+
- Daniel Jankowski
|
28
|
+
- Helmut Januschka
|
29
29
|
autorequire:
|
30
30
|
bindir: bin
|
31
31
|
cert_chain: []
|
32
|
-
date: 2020-
|
32
|
+
date: 2020-10-23 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: slack-notifier
|
@@ -983,6 +983,7 @@ files:
|
|
983
983
|
- fastlane/lib/fastlane/.erb_template_helper.rb.swp
|
984
984
|
- fastlane/lib/fastlane/action.rb
|
985
985
|
- fastlane/lib/fastlane/action_collector.rb
|
986
|
+
- fastlane/lib/fastlane/actions/.download_dsyms.rb.swp
|
986
987
|
- fastlane/lib/fastlane/actions/.git_commit.rb.swp
|
987
988
|
- fastlane/lib/fastlane/actions/README.md
|
988
989
|
- fastlane/lib/fastlane/actions/actions_helper.rb
|
@@ -1654,6 +1655,8 @@ files:
|
|
1654
1655
|
- spaceship/lib/spaceship/connect_api/models/bundle_id.rb
|
1655
1656
|
- spaceship/lib/spaceship/connect_api/models/bundle_id_capability.rb
|
1656
1657
|
- spaceship/lib/spaceship/connect_api/models/certificate.rb
|
1658
|
+
- spaceship/lib/spaceship/connect_api/models/custom_app_organization.rb
|
1659
|
+
- spaceship/lib/spaceship/connect_api/models/custom_app_user.rb
|
1657
1660
|
- spaceship/lib/spaceship/connect_api/models/device.rb
|
1658
1661
|
- spaceship/lib/spaceship/connect_api/models/idfa_declaration.rb
|
1659
1662
|
- spaceship/lib/spaceship/connect_api/models/pre_release_version.rb
|
@@ -1662,6 +1665,7 @@ files:
|
|
1662
1665
|
- spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb
|
1663
1666
|
- spaceship/lib/spaceship/connect_api/models/territory.rb
|
1664
1667
|
- spaceship/lib/spaceship/connect_api/models/user.rb
|
1668
|
+
- spaceship/lib/spaceship/connect_api/models/user_invitation.rb
|
1665
1669
|
- spaceship/lib/spaceship/connect_api/provisioning/client.rb
|
1666
1670
|
- spaceship/lib/spaceship/connect_api/provisioning/provisioning.rb
|
1667
1671
|
- spaceship/lib/spaceship/connect_api/response.rb
|