fastlane 2.169.0 → 2.170.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +78 -78
- data/deliver/lib/deliver/upload_metadata.rb +3 -3
- data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +4 -0
- data/fastlane/lib/fastlane/actions/onesignal.rb +13 -3
- data/fastlane/lib/fastlane/actions/upload_app_privacy_details_to_app_store.rb +289 -0
- data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -1
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +3 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/DeliverfileProtocol.swift +1 -1
- data/fastlane/swift/Fastlane.swift +44 -3
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +1 -1
- 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/match/lib/match/runner.rb +1 -1
- data/spaceship/lib/spaceship/connect_api.rb +6 -0
- data/{sigh/lib/sigh/.options.rb.swp → spaceship/lib/spaceship/connect_api/models/.app_data_usage_data_protection.rb.swp} +0 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usage.rb +59 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usage_category.rb +65 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usage_data_protection.rb +27 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usage_grouping.rb +18 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usage_purposes.rb +37 -0
- data/spaceship/lib/spaceship/connect_api/models/app_data_usages_publish_state.rb +36 -0
- data/spaceship/lib/spaceship/connect_api/models/device.rb +4 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +103 -0
- metadata +26 -22
- data/cert/lib/cert/.options.rb.swp +0 -0
- data/cert/lib/cert/.runner.rb.swp +0 -0
- data/match/lib/match/.options.rb.swp +0 -0
@@ -79,6 +79,7 @@ module Fastlane
|
|
79
79
|
available_external_actions = Fastlane.external_actions || []
|
80
80
|
available_actions = []
|
81
81
|
ActionsList.all_actions do |action|
|
82
|
+
next unless action.respond_to?(:action_name)
|
82
83
|
available_actions << action.action_name unless available_external_actions.include?(action)
|
83
84
|
end
|
84
85
|
|
@@ -108,6 +109,7 @@ module Fastlane
|
|
108
109
|
# Excludes all actions that aren't pluign actions (including external actions)
|
109
110
|
available_actions = []
|
110
111
|
ActionsList.all_actions do |action|
|
112
|
+
next unless action.respond_to?(:action_name)
|
111
113
|
available_actions << action.action_name unless available_plugins.include?(action)
|
112
114
|
end
|
113
115
|
|
@@ -151,6 +153,7 @@ module Fastlane
|
|
151
153
|
|
152
154
|
tool_details = []
|
153
155
|
ActionsList.all_actions do |action|
|
156
|
+
next unless action.respond_to?(:action_name)
|
154
157
|
next if self.actions_not_supported.include?(action.action_name)
|
155
158
|
|
156
159
|
swift_function = process_action(action: action)
|
@@ -5159,6 +5159,7 @@ public func oclint(oclintPath: String = "oclint",
|
|
5159
5159
|
- apnsP12: APNS P12 File (in .p12 format)
|
5160
5160
|
- apnsP12Password: APNS P12 password
|
5161
5161
|
- apnsEnv: APNS environment
|
5162
|
+
- organizationId: OneSignal Organization ID
|
5162
5163
|
|
5163
5164
|
You can use this action to automatically create or update a OneSignal application. You can also upload a `.p12` with password, a GCM key, or both.
|
5164
5165
|
*/
|
@@ -5169,7 +5170,8 @@ public func onesignal(appId: String? = nil,
|
|
5169
5170
|
androidGcmSenderId: String? = nil,
|
5170
5171
|
apnsP12: String? = nil,
|
5171
5172
|
apnsP12Password: String? = nil,
|
5172
|
-
apnsEnv: String = "production"
|
5173
|
+
apnsEnv: String = "production",
|
5174
|
+
organizationId: String? = nil)
|
5173
5175
|
{
|
5174
5176
|
let command = RubyCommand(commandID: "", methodName: "onesignal", className: nil, args: [RubyCommand.Argument(name: "app_id", value: appId),
|
5175
5177
|
RubyCommand.Argument(name: "auth_token", value: authToken),
|
@@ -5178,7 +5180,8 @@ public func onesignal(appId: String? = nil,
|
|
5178
5180
|
RubyCommand.Argument(name: "android_gcm_sender_id", value: androidGcmSenderId),
|
5179
5181
|
RubyCommand.Argument(name: "apns_p12", value: apnsP12),
|
5180
5182
|
RubyCommand.Argument(name: "apns_p12_password", value: apnsP12Password),
|
5181
|
-
RubyCommand.Argument(name: "apns_env", value: apnsEnv)
|
5183
|
+
RubyCommand.Argument(name: "apns_env", value: apnsEnv),
|
5184
|
+
RubyCommand.Argument(name: "organization_id", value: organizationId)])
|
5182
5185
|
_ = runner.executeCommand(command)
|
5183
5186
|
}
|
5184
5187
|
|
@@ -8427,6 +8430,44 @@ public func updateUrlSchemes(path: String,
|
|
8427
8430
|
_ = runner.executeCommand(command)
|
8428
8431
|
}
|
8429
8432
|
|
8433
|
+
/**
|
8434
|
+
Upload App Privacy Details for an app in App Store Connect
|
8435
|
+
|
8436
|
+
- parameters:
|
8437
|
+
- username: Your Apple ID Username for App Store Connect
|
8438
|
+
- appIdentifier: The bundle identifier of your app
|
8439
|
+
- teamId: The ID of your App Store Connect team if you're in multiple teams
|
8440
|
+
- teamName: The name of your App Store Connect team if you're in multiple teams
|
8441
|
+
- jsonPath: Path to the app usage data JSON
|
8442
|
+
- outputJsonPath: Path to the app usage data JSON file generated by interactive questions
|
8443
|
+
- skipJsonFileSaving: Whether to skip the saving of the JSON file
|
8444
|
+
- skipUpload: Whether to skip the upload and only create the JSON file with interactive questions
|
8445
|
+
- skipPublish: Whether to skip the publishing
|
8446
|
+
|
8447
|
+
Upload App Privacy Details for an app in App Store Connect. For more detail information, view https://docs.fastlane.tools/uploading-app-privacy-details
|
8448
|
+
*/
|
8449
|
+
public func uploadAppPrivacyDetailsToAppStore(username: String,
|
8450
|
+
appIdentifier: String,
|
8451
|
+
teamId: Any? = nil,
|
8452
|
+
teamName: String? = nil,
|
8453
|
+
jsonPath: String? = nil,
|
8454
|
+
outputJsonPath: String = "./fastlane/app_privacy_details.json",
|
8455
|
+
skipJsonFileSaving: Bool = false,
|
8456
|
+
skipUpload: Bool = false,
|
8457
|
+
skipPublish: Bool = false)
|
8458
|
+
{
|
8459
|
+
let command = RubyCommand(commandID: "", methodName: "upload_app_privacy_details_to_app_store", className: nil, args: [RubyCommand.Argument(name: "username", value: username),
|
8460
|
+
RubyCommand.Argument(name: "app_identifier", value: appIdentifier),
|
8461
|
+
RubyCommand.Argument(name: "team_id", value: teamId),
|
8462
|
+
RubyCommand.Argument(name: "team_name", value: teamName),
|
8463
|
+
RubyCommand.Argument(name: "json_path", value: jsonPath),
|
8464
|
+
RubyCommand.Argument(name: "output_json_path", value: outputJsonPath),
|
8465
|
+
RubyCommand.Argument(name: "skip_json_file_saving", value: skipJsonFileSaving),
|
8466
|
+
RubyCommand.Argument(name: "skip_upload", value: skipUpload),
|
8467
|
+
RubyCommand.Argument(name: "skip_publish", value: skipPublish)])
|
8468
|
+
_ = runner.executeCommand(command)
|
8469
|
+
}
|
8470
|
+
|
8430
8471
|
/**
|
8431
8472
|
Upload dSYM symbolication files to Crashlytics
|
8432
8473
|
|
@@ -9429,4 +9470,4 @@ public let snapshotfile = Snapshotfile()
|
|
9429
9470
|
|
9430
9471
|
// Please don't remove the lines below
|
9431
9472
|
// They are used to detect outdated files
|
9432
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9473
|
+
// FastlaneRunnerAPIVersion [0.9.106]
|
data/match/lib/match/runner.rb
CHANGED
@@ -355,7 +355,7 @@ module Match
|
|
355
355
|
devices = Spaceship::ConnectAPI::Device.all
|
356
356
|
unless device_classes.empty?
|
357
357
|
devices = devices.select do |device|
|
358
|
-
device_classes.include?(device.device_class)
|
358
|
+
device_classes.include?(device.device_class) && device.enabled?
|
359
359
|
end
|
360
360
|
end
|
361
361
|
|
@@ -35,6 +35,12 @@ require 'spaceship/connect_api/models/custom_app_organization'
|
|
35
35
|
require 'spaceship/connect_api/models/custom_app_user'
|
36
36
|
require 'spaceship/connect_api/models/pre_release_version'
|
37
37
|
|
38
|
+
require 'spaceship/connect_api/models/app_data_usage'
|
39
|
+
require 'spaceship/connect_api/models/app_data_usage_category'
|
40
|
+
require 'spaceship/connect_api/models/app_data_usage_data_protection'
|
41
|
+
require 'spaceship/connect_api/models/app_data_usage_grouping'
|
42
|
+
require 'spaceship/connect_api/models/app_data_usage_purposes'
|
43
|
+
require 'spaceship/connect_api/models/app_data_usages_publish_state'
|
38
44
|
require 'spaceship/connect_api/models/age_rating_declaration'
|
39
45
|
require 'spaceship/connect_api/models/app_category'
|
40
46
|
require 'spaceship/connect_api/models/app_info'
|
Binary file
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppDataUsage
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :category
|
8
|
+
attr_accessor :grouping
|
9
|
+
attr_accessor :purpose
|
10
|
+
attr_accessor :data_protection
|
11
|
+
|
12
|
+
attr_mapping({
|
13
|
+
"category" => "category",
|
14
|
+
"grouping" => "grouping",
|
15
|
+
"dataProtection" => "data_protection"
|
16
|
+
})
|
17
|
+
|
18
|
+
def self.type
|
19
|
+
return "appDataUsages"
|
20
|
+
end
|
21
|
+
|
22
|
+
#
|
23
|
+
# Helpers
|
24
|
+
#
|
25
|
+
|
26
|
+
def is_not_collected?
|
27
|
+
return false unless data_protection
|
28
|
+
return data_protection.id == "DATA_NOT_COLLECTED"
|
29
|
+
end
|
30
|
+
|
31
|
+
#
|
32
|
+
# API
|
33
|
+
#
|
34
|
+
|
35
|
+
def self.all(app_id:, filter: {}, includes: nil, limit: nil, sort: nil)
|
36
|
+
raise "app_id is required " if app_id.nil?
|
37
|
+
|
38
|
+
resps = Spaceship::ConnectAPI.get_app_data_usages(app_id: app_id, filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
39
|
+
return resps.flat_map(&:to_models)
|
40
|
+
end
|
41
|
+
|
42
|
+
def self.create(app_id:, app_data_usage_category_id: nil, app_data_usage_protection_id: nil, app_data_usage_purpose_id: nil)
|
43
|
+
raise "app_id is required " if app_id.nil?
|
44
|
+
|
45
|
+
resp = Spaceship::ConnectAPI.post_app_data_usage(
|
46
|
+
app_id: app_id,
|
47
|
+
app_data_usage_category_id: app_data_usage_category_id,
|
48
|
+
app_data_usage_protection_id: app_data_usage_protection_id,
|
49
|
+
app_data_usage_purpose_id: app_data_usage_purpose_id
|
50
|
+
)
|
51
|
+
return resp.to_models.first
|
52
|
+
end
|
53
|
+
|
54
|
+
def delete!
|
55
|
+
Spaceship::ConnectAPI.delete_app_data_usage(app_data_usage_id: id)
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
@@ -0,0 +1,65 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppDataUsageCategory
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :deleted
|
8
|
+
attr_accessor :grouping
|
9
|
+
|
10
|
+
attr_mapping({
|
11
|
+
"deleted" => "deleted",
|
12
|
+
"grouping" => "grouping"
|
13
|
+
})
|
14
|
+
|
15
|
+
# Found at https://appstoreconnect.apple.com/iris/v1/appDataUsageCategories
|
16
|
+
module ID
|
17
|
+
PAYMENT_INFORMATION = "PAYMENT_INFORMATION"
|
18
|
+
CREDIT_AND_FRAUD = "CREDIT_AND_FRAUD"
|
19
|
+
OTHER_FINANCIAL_INFO = "OTHER_FINANCIAL_INFO"
|
20
|
+
PRECISE_LOCATION = "PRECISE_LOCATION"
|
21
|
+
SENSITIVE_INFO = "SENSITIVE_INFO"
|
22
|
+
PHYSICAL_ADDRESS = "PHYSICAL_ADDRESS"
|
23
|
+
EMAIL_ADDRESS = "EMAIL_ADDRESS"
|
24
|
+
NAME = "NAME"
|
25
|
+
PHONE_NUMBER = "PHONE_NUMBER"
|
26
|
+
OTHER_CONTACT_INFO = "OTHER_CONTACT_INFO"
|
27
|
+
CONTACTS = "CONTACTS"
|
28
|
+
EMAILS_OR_TEXT_MESSAGES = "EMAILS_OR_TEXT_MESSAGES"
|
29
|
+
PHOTOS_OR_VIDEOS = "PHOTOS_OR_VIDEOS"
|
30
|
+
AUDIO = "AUDIO"
|
31
|
+
GAMEPLAY_CONTENT = "GAMEPLAY_CONTENT"
|
32
|
+
CUSTOMER_SUPPORT = "CUSTOMER_SUPPORT"
|
33
|
+
OTHER_USER_CONTENT = "OTHER_USER_CONTENT"
|
34
|
+
BROWSING_HISTORY = "BROWSING_HISTORY"
|
35
|
+
SEARCH_HISTORY = "SEARCH_HISTORY"
|
36
|
+
USER_ID = "USER_ID"
|
37
|
+
DEVICE_ID = "DEVICE_ID"
|
38
|
+
PURCHASE_HISTORY = "PURCHASE_HISTORY"
|
39
|
+
PRODUCT_INTERACTION = "PRODUCT_INTERACTION"
|
40
|
+
ADVERTISING_DATA = "ADVERTISING_DATA"
|
41
|
+
OTHER_USAGE_DATA = "OTHER_USAGE_DATA"
|
42
|
+
CRASH_DATA = "CRASH_DATA"
|
43
|
+
PERFORMANCE_DATA = "PERFORMANCE_DATA"
|
44
|
+
OTHER_DIAGNOSTIC_DATA = "OTHER_DIAGNOSTIC_DATA"
|
45
|
+
OTHER_DATA = "OTHER_DATA"
|
46
|
+
HEALTH = "HEALTH"
|
47
|
+
FITNESS = "FITNESS"
|
48
|
+
COARSE_LOCATION = "COARSE_LOCATION"
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.type
|
52
|
+
return "appDataUsageCategories"
|
53
|
+
end
|
54
|
+
|
55
|
+
#
|
56
|
+
# API
|
57
|
+
#
|
58
|
+
|
59
|
+
def self.all(filter: {}, includes: nil, limit: nil, sort: nil)
|
60
|
+
resps = Spaceship::ConnectAPI.get_app_data_usage_categories(filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
61
|
+
return resps.flat_map(&:to_models)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
65
|
+
end
|
@@ -0,0 +1,27 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppDataUsageDataProtection
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :deleted
|
8
|
+
|
9
|
+
attr_mapping({
|
10
|
+
"deleted" => "deleted"
|
11
|
+
})
|
12
|
+
|
13
|
+
# Found at https://appstoreconnect.apple.com/iris/v1/appDataUsageDataProtections
|
14
|
+
module ID
|
15
|
+
DATA_USED_TO_TRACK_YOU = "DATA_USED_TO_TRACK_YOU"
|
16
|
+
DATA_LINKED_TO_YOU = "DATA_LINKED_TO_YOU"
|
17
|
+
DATA_NOT_LINKED_TO_YOU = "DATA_NOT_LINKED_TO_YOU"
|
18
|
+
|
19
|
+
DATA_NOT_COLLECTED = "DATA_NOT_COLLECTED"
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.type
|
23
|
+
return "appDataUsageDataProtections"
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppDataUsageGrouping
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :deleted
|
8
|
+
|
9
|
+
attr_mapping({
|
10
|
+
"deleted" => "deleted"
|
11
|
+
})
|
12
|
+
|
13
|
+
def self.type
|
14
|
+
return "appDataUsageGroupings"
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
require_relative '../model'
|
2
|
+
module Spaceship
|
3
|
+
class ConnectAPI
|
4
|
+
class AppDataUsagePurpose
|
5
|
+
include Spaceship::ConnectAPI::Model
|
6
|
+
|
7
|
+
attr_accessor :deleted
|
8
|
+
|
9
|
+
attr_mapping({
|
10
|
+
"deleted" => "deleted"
|
11
|
+
})
|
12
|
+
|
13
|
+
# Found at https://appstoreconnect.apple.com/iris/v1/appDataUsagePurposes
|
14
|
+
module ID
|
15
|
+
THIRD_PARTY_ADVERTISING = "THIRD_PARTY_ADVERTISING"
|
16
|
+
DEVELOPERS_ADVERTISING = "DEVELOPERS_ADVERTISING"
|
17
|
+
ANALYTICS = "ANALYTICS"
|
18
|
+
PRODUCT_PERSONALIZATION = "PRODUCT_PERSONALIZATION"
|
19
|
+
APP_FUNCTIONALITY = "APP_FUNCTIONALITY"
|
20
|
+
OTHER_PURPOSES = "OTHER_PURPOSES"
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.type
|
24
|
+
return "appDataUsagePurposes"
|
25
|
+
end
|
26
|
+
|
27
|
+
#
|
28
|
+
# API
|
29
|
+
#
|
30
|
+
|
31
|
+
def self.all(filter: {}, includes: nil, limit: nil, sort: nil)
|
32
|
+
resps = Spaceship::ConnectAPI.get_app_data_usage_purposes(filter: filter, includes: includes, limit: limit, sort: sort).all_pages
|
33
|
+
return resps.flat_map(&:to_models)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|