fastlane 2.150.1 → 2.151.2
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/{fastlane/lib/fastlane/actions/.update_project_provisioning.rb.swp → deliver/lib/deliver/.commands_generator.rb.swp} +0 -0
- data/deliver/lib/deliver/.submit_for_review.rb.swp +0 -0
- data/deliver/lib/deliver/app_screenshot.rb +4 -4
- data/deliver/lib/deliver/download_screenshots.rb +35 -28
- data/deliver/lib/deliver/options.rb +7 -1
- data/deliver/lib/deliver/runner.rb +7 -3
- data/deliver/lib/deliver/submit_for_review.rb +7 -7
- data/deliver/lib/deliver/upload_metadata.rb +5 -5
- data/deliver/lib/deliver/upload_screenshots.rb +1 -1
- data/fastlane/lib/fastlane/actions/docs/upload_to_testflight.md +3 -0
- data/fastlane/lib/fastlane/actions/notarize.rb +13 -3
- data/fastlane/lib/fastlane/actions/pod_push.rb +10 -1
- data/fastlane/lib/fastlane/actions/resign.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_ci.rb +5 -0
- data/fastlane/lib/fastlane/actions/setup_circle_ci.rb +1 -1
- data/fastlane/lib/fastlane/actions/setup_travis.rb +1 -1
- data/fastlane/lib/fastlane/actions/slather.rb +7 -0
- data/fastlane/lib/fastlane/actions/upload_symbols_to_crashlytics.rb +10 -2
- data/fastlane/lib/fastlane/documentation/docs_generator.rb +1 -1
- data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/helper/.s3_client_helper.rb.swp} +0 -0
- data/fastlane/lib/fastlane/helper/s3_client_helper.rb +28 -11
- data/fastlane/lib/fastlane/server/socket_server.rb +7 -1
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Actions.swift +1 -1
- data/fastlane/swift/ArgumentProcessor.swift +24 -24
- data/fastlane/swift/ControlCommand.swift +3 -3
- data/fastlane/swift/Deliverfile.swift +4 -8
- data/fastlane/swift/DeliverfileProtocol.swift +181 -182
- data/fastlane/swift/Fastlane.swift +2819 -2805
- data/fastlane/swift/Gymfile.swift +4 -8
- data/fastlane/swift/GymfileProtocol.swift +133 -134
- data/fastlane/swift/LaneFileProtocol.swift +17 -17
- data/fastlane/swift/Matchfile.swift +4 -8
- data/fastlane/swift/MatchfileProtocol.swift +115 -112
- data/fastlane/swift/Plugins.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +4 -8
- data/fastlane/swift/PrecheckfileProtocol.swift +22 -23
- data/fastlane/swift/RubyCommand.swift +34 -37
- data/fastlane/swift/RubyCommandable.swift +3 -1
- data/fastlane/swift/Runner.swift +76 -69
- data/fastlane/swift/Scanfile.swift +4 -8
- data/fastlane/swift/ScanfileProtocol.swift +190 -191
- data/fastlane/swift/Screengrabfile.swift +4 -8
- data/fastlane/swift/ScreengrabfileProtocol.swift +67 -68
- data/fastlane/swift/Snapshotfile.swift +4 -8
- data/fastlane/swift/SnapshotfileProtocol.swift +127 -128
- data/fastlane/swift/SocketClient.swift +84 -90
- data/fastlane/swift/SocketResponse.swift +14 -14
- data/fastlane/swift/formatting/Brewfile +1 -0
- data/fastlane/swift/formatting/Brewfile.lock.json +39 -0
- data/fastlane/swift/formatting/Rakefile +18 -0
- data/fastlane/swift/main.swift +5 -6
- data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +21 -10
- data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +1 -1
- data/{fastlane/lib/fastlane/actions/.hockey.rb.swp → frameit/lib/frameit/.editor.rb.swp} +0 -0
- data/match/lib/assets/READMETemplate.md +5 -2
- data/match/lib/match/options.rb +4 -0
- data/match/lib/match/runner.rb +5 -4
- data/match/lib/match/storage/git_storage.rb +1 -1
- data/match/lib/match/storage/s3_storage.rb +25 -7
- data/sigh/lib/assets/resign.sh +18 -0
- data/spaceship/lib/spaceship/{connect_api/.DS_Store → .DS_Store} +0 -0
- data/spaceship/lib/spaceship/client.rb +1 -2
- data/spaceship/lib/spaceship/connect_api.rb +1 -0
- data/spaceship/lib/spaceship/connect_api/client.rb +0 -1
- data/spaceship/lib/spaceship/connect_api/file_uploader.rb +0 -1
- data/spaceship/lib/spaceship/connect_api/models/app.rb +3 -3
- data/spaceship/lib/spaceship/connect_api/models/app_info.rb +24 -1
- data/spaceship/lib/spaceship/connect_api/models/app_preview.rb +7 -6
- data/spaceship/lib/spaceship/connect_api/models/app_preview_set.rb +31 -2
- data/spaceship/lib/spaceship/connect_api/models/app_screenshot_set.rb +24 -2
- data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +1 -1
- data/spaceship/lib/spaceship/connect_api/models/certificate.rb +11 -1
- data/spaceship/lib/spaceship/connect_api/models/sandbox_tester.rb +64 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +45 -0
- metadata +45 -51
- data/fastlane/lib/fastlane/actions/.slack.rb.swp +0 -0
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/spaceship/lib/spaceship/babosa_fix.rb +0 -30
@@ -112,7 +112,7 @@ module Deliver
|
|
112
112
|
UI.important("Set env DELIVER_SKIP_WAIT_FOR_SCREENSHOT_PROCESSING=true to skip waiting for screenshots to process")
|
113
113
|
else
|
114
114
|
UI.important("Skipping the wait for screenshot image processing (which may affect submission)")
|
115
|
-
UI.important("Set env DELIVER_SKIP_WAIT_FOR_SCREENSHOT_PROCESSING=false to
|
115
|
+
UI.important("Set env DELIVER_SKIP_WAIT_FOR_SCREENSHOT_PROCESSING=false to wait for screenshots to process")
|
116
116
|
end
|
117
117
|
|
118
118
|
# Upload screenshots
|
@@ -229,3 +229,6 @@ If you are on multiple App Store Connect teams, iTunes Transporter may need a pr
|
|
229
229
|
## Use an Application Specific Password to upload
|
230
230
|
|
231
231
|
_pilot_/`upload_to_testflight` can use an [Application Specific Password via the `FASTLANE_APPLE_APPLICATION_SPECIFIC_PASSWORD` envirionment variable](https://docs.fastlane.tools/best-practices/continuous-integration/#application-specific-passwords) to upload a binary if both the `skip_waiting_for_build_processing` and `apple_id` options are set. (If any of those are not set, it will use the normal Apple login process that might require 2FA authentication.)
|
232
|
+
|
233
|
+
## Role for App Store Connect User
|
234
|
+
_pilot_/`upload_to_testflight` updates build information and testers after the build has finished processing. App Store Connect requires the "App Manager" or "Admin" role for your Apple account to update this information. The "Developer" role will allow builds to be uploaded but _will not_ allow updating of build information and testers.
|
@@ -72,13 +72,23 @@ module Fastlane
|
|
72
72
|
|
73
73
|
UI.message('Querying request status')
|
74
74
|
|
75
|
+
# As of July 2020, the request UUID might not be available for polling yet which returns an error code
|
76
|
+
# This is now handled with the error_callback (which prevents an error from being raised)
|
77
|
+
# Catching this error allows for polling to continue until the notarization is complete
|
78
|
+
error = false
|
75
79
|
notarization_info_response = Actions.sh(
|
76
80
|
"xcrun altool --notarization-info #{notarization_request_id} -u #{apple_id_account.user} -p @env:FL_NOTARIZE_PASSWORD --output-format xml",
|
77
|
-
log: verbose
|
81
|
+
log: verbose,
|
82
|
+
error_callback: lambda { |msg|
|
83
|
+
error = true
|
84
|
+
UI.error("Error polling for notarization info: #{msg}")
|
85
|
+
}
|
78
86
|
)
|
79
87
|
|
80
|
-
|
81
|
-
|
88
|
+
unless error
|
89
|
+
notarization_info_plist = Plist.parse_xml(notarization_info_response)
|
90
|
+
notarization_info = notarization_info_plist['notarization-info']
|
91
|
+
end
|
82
92
|
end
|
83
93
|
|
84
94
|
log_url = notarization_info['LogFileURL']
|
@@ -51,6 +51,10 @@ module Fastlane
|
|
51
51
|
command << "--use-modular-headers"
|
52
52
|
end
|
53
53
|
|
54
|
+
if params[:synchronous]
|
55
|
+
command << "--synchronous"
|
56
|
+
end
|
57
|
+
|
54
58
|
result = Actions.sh(command.join(' '))
|
55
59
|
UI.success("Successfully pushed Podspec ⬆️ ")
|
56
60
|
return result
|
@@ -127,7 +131,12 @@ module Fastlane
|
|
127
131
|
description: "Use modular headers option during validation",
|
128
132
|
optional: true,
|
129
133
|
type: Boolean,
|
130
|
-
env_name: "FL_POD_PUSH_USE_MODULAR_HEADERS")
|
134
|
+
env_name: "FL_POD_PUSH_USE_MODULAR_HEADERS"),
|
135
|
+
FastlaneCore::ConfigItem.new(key: :synchronous,
|
136
|
+
description: "If validation depends on other recently pushed pods, synchronize",
|
137
|
+
optional: true,
|
138
|
+
type: Boolean,
|
139
|
+
env_name: "FL_POD_PUSH_SYNCHRONOUS")
|
131
140
|
]
|
132
141
|
end
|
133
142
|
|
@@ -108,7 +108,7 @@ module Fastlane
|
|
108
108
|
optional: true),
|
109
109
|
FastlaneCore::ConfigItem.new(key: :use_app_entitlements,
|
110
110
|
env_name: "FL_USE_APP_ENTITLEMENTS",
|
111
|
-
description: "Extract app bundle codesigning entitlements and combine with entitlements from new
|
111
|
+
description: "Extract app bundle codesigning entitlements and combine with entitlements from new provisioning profile",
|
112
112
|
conflicting_options: [:entitlements],
|
113
113
|
is_string: false,
|
114
114
|
optional: true),
|
@@ -24,6 +24,11 @@ module Fastlane
|
|
24
24
|
end
|
25
25
|
|
26
26
|
def self.setup_keychain
|
27
|
+
unless Helper.mac?
|
28
|
+
UI.message("Skipping Keychain setup on non-macOS CI Agent")
|
29
|
+
return
|
30
|
+
end
|
31
|
+
|
27
32
|
unless ENV["MATCH_KEYCHAIN_NAME"].nil?
|
28
33
|
UI.message("Skipping Keychain setup as a keychain was already specified")
|
29
34
|
return
|
@@ -16,6 +16,7 @@ module Fastlane
|
|
16
16
|
cobertura_xml: '--cobertura-xml',
|
17
17
|
sonarqube_xml: '--sonarqube-xml',
|
18
18
|
llvm_cov: '--llvm-cov',
|
19
|
+
json: '--json',
|
19
20
|
html: '--html',
|
20
21
|
show: '--show',
|
21
22
|
|
@@ -225,6 +226,12 @@ module Fastlane
|
|
225
226
|
description: "Tell slather that it should output results as llvm-cov show format",
|
226
227
|
is_string: false,
|
227
228
|
optional: true),
|
229
|
+
FastlaneCore::ConfigItem.new(key: :json,
|
230
|
+
env_name: "FL_SLATHER_JSON_ENABLED",
|
231
|
+
description: "Tell slather that it should output results as static JSON report",
|
232
|
+
is_string: false,
|
233
|
+
type: Boolean,
|
234
|
+
optional: true),
|
228
235
|
FastlaneCore::ConfigItem.new(key: :html,
|
229
236
|
env_name: "FL_SLATHER_HTML_ENABLED",
|
230
237
|
description: "Tell slather that it should output results as static HTML pages",
|
@@ -56,6 +56,9 @@ module Fastlane
|
|
56
56
|
UI.message("Uploading '#{path}'...")
|
57
57
|
command = []
|
58
58
|
command << File.expand_path(params[:binary_path]).shellescape
|
59
|
+
if params[:debug]
|
60
|
+
command << "-d"
|
61
|
+
end
|
59
62
|
if params[:app_id]
|
60
63
|
command << "-ai #{params[:app_id].shellescape}"
|
61
64
|
elsif params[:gsp_path]
|
@@ -68,7 +71,7 @@ module Fastlane
|
|
68
71
|
begin
|
69
72
|
command_to_execute = command.join(" ")
|
70
73
|
UI.verbose("upload_dsym using command: #{command_to_execute}")
|
71
|
-
Actions.sh(command_to_execute, log:
|
74
|
+
Actions.sh(command_to_execute, log: params[:debug])
|
72
75
|
rescue => ex
|
73
76
|
UI.error(ex.to_s) # it fails, however we don't want to fail everything just for this
|
74
77
|
end
|
@@ -189,7 +192,12 @@ module Fastlane
|
|
189
192
|
verify_block: proc do |value|
|
190
193
|
min_threads = 1
|
191
194
|
UI.user_error!("Too few threads (#{value}) minimum number of threads: #{min_threads}") unless value >= min_threads
|
192
|
-
end)
|
195
|
+
end),
|
196
|
+
FastlaneCore::ConfigItem.new(key: :debug,
|
197
|
+
env_name: "FL_UPLOAD_SYMBOLS_TO_CRASHLYTICS_DEBUG",
|
198
|
+
description: "Enable debug mode for upload-symbols",
|
199
|
+
type: Boolean,
|
200
|
+
default_value: false)
|
193
201
|
]
|
194
202
|
end
|
195
203
|
|
@@ -18,7 +18,7 @@ module Fastlane
|
|
18
18
|
output << "```"
|
19
19
|
output << "[sudo] gem install fastlane -NV"
|
20
20
|
output << "```"
|
21
|
-
output << "or alternatively using `brew
|
21
|
+
output << "or alternatively using `brew install fastlane`"
|
22
22
|
output << ""
|
23
23
|
output << "# Available Actions"
|
24
24
|
|
data/{pilot/lib/pilot/.manager.rb.swp → fastlane/lib/fastlane/helper/.s3_client_helper.rb.swp}
RENAMED
Binary file
|
@@ -3,14 +3,15 @@ require 'aws-sdk-s3'
|
|
3
3
|
module Fastlane
|
4
4
|
module Helper
|
5
5
|
class S3ClientHelper
|
6
|
-
attr_reader :
|
6
|
+
attr_reader :access_key
|
7
|
+
attr_reader :region
|
7
8
|
|
8
|
-
def initialize(access_key: nil, secret_access_key: nil, region: nil)
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
def initialize(access_key: nil, secret_access_key: nil, region: nil, s3_client: nil)
|
10
|
+
@access_key = access_key
|
11
|
+
@secret_access_key = secret_access_key
|
12
|
+
@region = region
|
13
|
+
|
14
|
+
@client = s3_client
|
14
15
|
end
|
15
16
|
|
16
17
|
def list_buckets
|
@@ -50,12 +51,28 @@ module Fastlane
|
|
50
51
|
|
51
52
|
return bucket
|
52
53
|
end
|
53
|
-
end
|
54
54
|
|
55
|
-
|
55
|
+
private
|
56
|
+
|
57
|
+
attr_reader :secret_access_key
|
58
|
+
|
59
|
+
def client
|
60
|
+
@client ||= Aws::S3::Client.new(
|
61
|
+
{
|
62
|
+
region: region,
|
63
|
+
credentials: create_credentials
|
64
|
+
}.compact
|
65
|
+
)
|
66
|
+
end
|
67
|
+
|
68
|
+
def create_credentials
|
69
|
+
return nil if access_key.to_s.empty? || secret_access_key.to_s.empty?
|
56
70
|
|
57
|
-
|
58
|
-
|
71
|
+
Aws::Credentials.new(
|
72
|
+
access_key,
|
73
|
+
secret_access_key
|
74
|
+
)
|
75
|
+
end
|
59
76
|
end
|
60
77
|
end
|
61
78
|
end
|
@@ -215,6 +215,10 @@ module Fastlane
|
|
215
215
|
exception_array << "#{e.class}:"
|
216
216
|
exception_array << e.backtrace
|
217
217
|
|
218
|
+
ec = e.class
|
219
|
+
|
220
|
+
em = e.message
|
221
|
+
|
218
222
|
while e.respond_to?("cause") && (e = e.cause)
|
219
223
|
exception_array << "cause: #{e.class}"
|
220
224
|
exception_array << e.backtrace
|
@@ -223,7 +227,9 @@ module Fastlane
|
|
223
227
|
payload = {
|
224
228
|
payload: {
|
225
229
|
status: "failure",
|
226
|
-
failure_information: exception_array.flatten
|
230
|
+
failure_information: exception_array.flatten,
|
231
|
+
failure_class: ec,
|
232
|
+
failure_message: em
|
227
233
|
}
|
228
234
|
}
|
229
235
|
return JSON.generate(payload)
|
@@ -31,7 +31,7 @@ module Fastlane
|
|
31
31
|
|
32
32
|
# rubocop:disable LineLength
|
33
33
|
# class instance?
|
34
|
-
@reserved_words = %w[associativity break case catch class continue convenience default deinit didSet do else enum extension fallthrough false final for func
|
34
|
+
@reserved_words = %w[associativity break case catch class continue convenience default deinit didSet do else enum extension fallthrough false final for func guard if in infix init inout internal lazy let mutating nil operator override precedence private public repeat required return self static struct subscript super switch throws true try var weak where while willSet].to_set
|
35
35
|
# rubocop:enable LineLength
|
36
36
|
end
|
37
37
|
|
@@ -19,68 +19,68 @@ struct ArgumentProcessor {
|
|
19
19
|
let currentLane: String
|
20
20
|
let commandTimeout: Int
|
21
21
|
let port: UInt32
|
22
|
-
|
23
|
-
init(args: [String]) {
|
22
|
+
|
23
|
+
init(args: [String]) {
|
24
24
|
// Dump the first arg which is the program name
|
25
25
|
let fastlaneArgs = stride(from: 1, to: args.count - 1, by: 2).map {
|
26
|
-
RunnerArgument(name: args[$0], value: args[$0+1])
|
26
|
+
RunnerArgument(name: args[$0], value: args[$0 + 1])
|
27
27
|
}
|
28
28
|
self.args = fastlaneArgs
|
29
|
-
|
29
|
+
|
30
30
|
let fastlaneArgsMinusLanes = fastlaneArgs.filter { arg in
|
31
|
-
|
31
|
+
arg.name.lowercased() != "lane"
|
32
32
|
}
|
33
|
-
|
33
|
+
|
34
34
|
let potentialLogMode = fastlaneArgsMinusLanes.filter { arg in
|
35
|
-
|
35
|
+
arg.name.lowercased() == "logmode"
|
36
36
|
}
|
37
|
-
|
37
|
+
|
38
38
|
port = UInt32(fastlaneArgsMinusLanes.first(where: { $0.name == "swiftServerPort" })?.value ?? "") ?? 2000
|
39
|
-
|
39
|
+
|
40
40
|
// Configure logMode since we might need to use it before we finish parsing
|
41
41
|
if let logModeArg = potentialLogMode.first {
|
42
42
|
let logModeString = logModeArg.value
|
43
43
|
Logger.logMode = Logger.LogMode(logMode: logModeString)
|
44
44
|
}
|
45
|
-
|
45
|
+
|
46
46
|
let lanes = self.args.filter { arg in
|
47
|
-
|
47
|
+
arg.name.lowercased() == "lane"
|
48
48
|
}
|
49
49
|
verbose(message: lanes.description)
|
50
|
-
|
50
|
+
|
51
51
|
guard lanes.count == 1 else {
|
52
52
|
let message = "You must have exactly one lane specified as an arg, here's what I got: \(lanes)"
|
53
53
|
log(message: message)
|
54
54
|
fatalError(message)
|
55
55
|
}
|
56
|
-
|
56
|
+
|
57
57
|
let lane = lanes.first!
|
58
|
-
|
59
|
-
|
58
|
+
currentLane = lane.value
|
59
|
+
|
60
60
|
// User might have configured a timeout for the socket connection
|
61
61
|
let potentialTimeout = fastlaneArgsMinusLanes.filter { arg in
|
62
|
-
|
62
|
+
arg.name.lowercased() == "timeoutseconds"
|
63
63
|
}
|
64
|
-
|
64
|
+
|
65
65
|
if let logModeArg = potentialLogMode.first {
|
66
66
|
let logModeString = logModeArg.value
|
67
67
|
Logger.logMode = Logger.LogMode(logMode: logModeString)
|
68
68
|
}
|
69
|
-
|
69
|
+
|
70
70
|
if let timeoutArg = potentialTimeout.first {
|
71
71
|
let timeoutString = timeoutArg.value
|
72
|
-
|
72
|
+
commandTimeout = (timeoutString as NSString).integerValue
|
73
73
|
} else {
|
74
|
-
|
74
|
+
commandTimeout = SocketClient.defaultCommandTimeoutSeconds
|
75
75
|
}
|
76
76
|
}
|
77
|
-
|
78
|
-
func laneParameters() -> [String
|
79
|
-
let laneParametersArgs =
|
77
|
+
|
78
|
+
func laneParameters() -> [String: String] {
|
79
|
+
let laneParametersArgs = args.filter { arg in
|
80
80
|
let lowercasedName = arg.name.lowercased()
|
81
81
|
return lowercasedName != "timeoutseconds" && lowercasedName != "lane" && lowercasedName != "logmode"
|
82
82
|
}
|
83
|
-
var laneParameters = [String
|
83
|
+
var laneParameters = [String: String]()
|
84
84
|
for arg in laneParametersArgs {
|
85
85
|
laneParameters[arg.name] = arg.value
|
86
86
|
}
|
@@ -52,12 +52,12 @@ struct ControlCommand: RubyCommandable {
|
|
52
52
|
let id: String = UUID().uuidString
|
53
53
|
let shutdownCommandType: ShutdownCommandType
|
54
54
|
var commandJson: String {
|
55
|
-
var jsonDictionary: [String: Any] = [ControlCommand.commandKey
|
55
|
+
var jsonDictionary: [String: Any] = [ControlCommand.commandKey: shutdownCommandType.token]
|
56
56
|
|
57
57
|
if let message = message {
|
58
58
|
jsonDictionary[ShutdownCommandType.userMessageKey] = message
|
59
59
|
}
|
60
|
-
if case .cancel(
|
60
|
+
if case let .cancel(reason) = shutdownCommandType {
|
61
61
|
jsonDictionary[ShutdownCommandType.CancelReason.reasonKey] = reason.reasonText
|
62
62
|
}
|
63
63
|
|
@@ -67,7 +67,7 @@ struct ControlCommand: RubyCommandable {
|
|
67
67
|
}
|
68
68
|
|
69
69
|
init(commandType: ShutdownCommandType, message: String? = nil) {
|
70
|
-
|
70
|
+
shutdownCommandType = commandType
|
71
71
|
self.message = message
|
72
72
|
}
|
73
73
|
}
|
@@ -9,13 +9,9 @@
|
|
9
9
|
//
|
10
10
|
|
11
11
|
class Deliverfile: DeliverfileProtocol {
|
12
|
-
// If you want to enable `deliver`, run `fastlane deliver init`
|
13
|
-
// After, this file will be replaced with a custom implementation that contains values you supplied
|
14
|
-
// during the `init` process, and you won't see this message
|
12
|
+
// If you want to enable `deliver`, run `fastlane deliver init`
|
13
|
+
// After, this file will be replaced with a custom implementation that contains values you supplied
|
14
|
+
// during the `init` process, and you won't see this message
|
15
15
|
}
|
16
16
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
// Generated with fastlane 2.150.1
|
17
|
+
// Generated with fastlane 2.151.2
|
@@ -1,249 +1,248 @@
|
|
1
1
|
protocol DeliverfileProtocol: class {
|
2
|
+
/// Your Apple ID Username
|
3
|
+
var username: String { get }
|
2
4
|
|
3
|
-
|
4
|
-
|
5
|
+
/// The bundle identifier of your app
|
6
|
+
var appIdentifier: String? { get }
|
5
7
|
|
6
|
-
|
7
|
-
|
8
|
+
/// The version that should be edited or created
|
9
|
+
var appVersion: String? { get }
|
8
10
|
|
9
|
-
|
10
|
-
|
11
|
+
/// Path to your ipa file
|
12
|
+
var ipa: String? { get }
|
11
13
|
|
12
|
-
|
13
|
-
|
14
|
+
/// Path to your pkg file
|
15
|
+
var pkg: String? { get }
|
14
16
|
|
15
|
-
|
16
|
-
|
17
|
+
/// If set the given build number (already uploaded to iTC) will be used instead of the current built one
|
18
|
+
var buildNumber: String? { get }
|
17
19
|
|
18
|
-
|
19
|
-
|
20
|
+
/// The platform to use (optional)
|
21
|
+
var platform: String { get }
|
20
22
|
|
21
|
-
|
22
|
-
|
23
|
+
/// Modify live metadata, this option disables ipa upload and screenshot upload
|
24
|
+
var editLive: Bool { get }
|
23
25
|
|
24
|
-
|
25
|
-
|
26
|
+
/// Force usage of live version rather than edit version
|
27
|
+
var useLiveVersion: Bool { get }
|
26
28
|
|
27
|
-
|
28
|
-
|
29
|
+
/// Path to the folder containing the metadata files
|
30
|
+
var metadataPath: String? { get }
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
+
/// Path to the folder containing the screenshots
|
33
|
+
var screenshotsPath: String? { get }
|
32
34
|
|
33
|
-
|
34
|
-
|
35
|
+
/// Skip uploading an ipa or pkg to App Store Connect
|
36
|
+
var skipBinaryUpload: Bool { get }
|
35
37
|
|
36
|
-
|
37
|
-
|
38
|
+
/// Don't upload the screenshots
|
39
|
+
var skipScreenshots: Bool { get }
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
+
/// Don't upload the metadata (e.g. title, description). This will still upload screenshots
|
42
|
+
var skipMetadata: Bool { get }
|
41
43
|
|
42
|
-
|
43
|
-
|
44
|
+
/// Don't update app version for submission
|
45
|
+
var skipAppVersionUpdate: Bool { get }
|
44
46
|
|
45
|
-
|
46
|
-
|
47
|
+
/// Skip the HTML report file verification
|
48
|
+
var force: Bool { get }
|
47
49
|
|
48
|
-
|
49
|
-
|
50
|
+
/// Clear all previously uploaded screenshots before uploading the new ones
|
51
|
+
var overwriteScreenshots: Bool { get }
|
50
52
|
|
51
|
-
|
52
|
-
|
53
|
+
/// Submit the new version for Review after uploading everything
|
54
|
+
var submitForReview: Bool { get }
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
+
/// Rejects the previously submitted build if it's in a state where it's possible
|
57
|
+
var rejectIfPossible: Bool { get }
|
56
58
|
|
57
|
-
|
58
|
-
|
59
|
+
/// Should the app be automatically released once it's approved? (Can not be used together with `auto_release_date`)
|
60
|
+
var automaticRelease: Bool { get }
|
59
61
|
|
60
|
-
|
61
|
-
|
62
|
+
/// Date in milliseconds for automatically releasing on pending approval (Can not be used together with `automatic_release`)
|
63
|
+
var autoReleaseDate: Int? { get }
|
62
64
|
|
63
|
-
|
64
|
-
|
65
|
+
/// Enable the phased release feature of iTC
|
66
|
+
var phasedRelease: Bool { get }
|
65
67
|
|
66
|
-
|
67
|
-
|
68
|
+
/// Reset the summary rating when you release a new version of the application
|
69
|
+
var resetRatings: Bool { get }
|
68
70
|
|
69
|
-
|
70
|
-
|
71
|
+
/// The price tier of this application
|
72
|
+
var priceTier: String? { get }
|
71
73
|
|
72
|
-
|
73
|
-
|
74
|
+
/// Path to the app rating's config
|
75
|
+
var appRatingConfigPath: String? { get }
|
74
76
|
|
75
|
-
|
76
|
-
|
77
|
+
/// Extra information for the submission (e.g. compliance specifications, IDFA settings)
|
78
|
+
var submissionInformation: [String: Any]? { get }
|
77
79
|
|
78
|
-
|
79
|
-
|
80
|
+
/// The ID of your App Store Connect team if you're in multiple teams
|
81
|
+
var teamId: String? { get }
|
80
82
|
|
81
|
-
|
82
|
-
|
83
|
+
/// The name of your App Store Connect team if you're in multiple teams
|
84
|
+
var teamName: String? { get }
|
83
85
|
|
84
|
-
|
85
|
-
|
86
|
+
/// The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!
|
87
|
+
var devPortalTeamId: String? { get }
|
86
88
|
|
87
|
-
|
88
|
-
|
89
|
+
/// The name of your Developer Portal team if you're in multiple teams
|
90
|
+
var devPortalTeamName: String? { get }
|
89
91
|
|
90
|
-
|
91
|
-
|
92
|
+
/// The provider short name to be used with the iTMSTransporter to identify your team. This value will override the automatically detected provider short name. To get provider short name run `pathToXcode.app/Contents/Applications/Application\ Loader.app/Contents/itms/bin/iTMSTransporter -m provider -u 'USERNAME' -p 'PASSWORD' -account_type itunes_connect -v off`. The short names of providers should be listed in the second column
|
93
|
+
var itcProvider: String? { get }
|
92
94
|
|
93
|
-
|
94
|
-
|
95
|
+
/// Run precheck before submitting to app review
|
96
|
+
var runPrecheckBeforeSubmit: Bool { get }
|
95
97
|
|
96
|
-
|
97
|
-
|
98
|
+
/// The default precheck rule level unless otherwise configured
|
99
|
+
var precheckDefaultRuleLevel: String { get }
|
98
100
|
|
99
|
-
|
100
|
-
|
101
|
+
/// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow
|
102
|
+
var individualMetadataItems: [String] { get }
|
101
103
|
|
102
|
-
|
103
|
-
|
104
|
+
/// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - Metadata: The path to the app icon
|
105
|
+
var appIcon: String? { get }
|
104
106
|
|
105
|
-
|
106
|
-
|
107
|
+
/// **DEPRECATED!** Removed after the migration to the new App Store Connect API in June 2020 - Metadata: The path to the Apple Watch app icon
|
108
|
+
var appleWatchAppIcon: String? { get }
|
107
109
|
|
108
|
-
|
109
|
-
|
110
|
+
/// Metadata: The copyright notice
|
111
|
+
var copyright: String? { get }
|
110
112
|
|
111
|
-
|
112
|
-
|
113
|
+
/// Metadata: The english name of the primary category (e.g. `Business`, `Books`)
|
114
|
+
var primaryCategory: String? { get }
|
113
115
|
|
114
|
-
|
115
|
-
|
116
|
+
/// Metadata: The english name of the secondary category (e.g. `Business`, `Books`)
|
117
|
+
var secondaryCategory: String? { get }
|
116
118
|
|
117
|
-
|
118
|
-
|
119
|
+
/// Metadata: The english name of the primary first sub category (e.g. `Educational`, `Puzzle`)
|
120
|
+
var primaryFirstSubCategory: String? { get }
|
119
121
|
|
120
|
-
|
121
|
-
|
122
|
+
/// Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)
|
123
|
+
var primarySecondSubCategory: String? { get }
|
122
124
|
|
123
|
-
|
124
|
-
|
125
|
+
/// Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)
|
126
|
+
var secondaryFirstSubCategory: String? { get }
|
125
127
|
|
126
|
-
|
127
|
-
|
128
|
+
/// Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)
|
129
|
+
var secondarySecondSubCategory: String? { get }
|
128
130
|
|
129
|
-
|
130
|
-
|
131
|
+
/// Metadata: A hash containing the trade representative contact information
|
132
|
+
var tradeRepresentativeContactInformation: [String: Any]? { get }
|
131
133
|
|
132
|
-
|
133
|
-
|
134
|
+
/// Metadata: A hash containing the review information
|
135
|
+
var appReviewInformation: [String: Any]? { get }
|
134
136
|
|
135
|
-
|
136
|
-
|
137
|
+
/// Metadata: Path to the app review attachment file
|
138
|
+
var appReviewAttachmentFile: String? { get }
|
137
139
|
|
138
|
-
|
139
|
-
|
140
|
+
/// Metadata: The localised app description
|
141
|
+
var description: String? { get }
|
140
142
|
|
141
|
-
|
142
|
-
|
143
|
+
/// Metadata: The localised app name
|
144
|
+
var name: String? { get }
|
143
145
|
|
144
|
-
|
145
|
-
|
146
|
+
/// Metadata: The localised app subtitle
|
147
|
+
var subtitle: [String: Any]? { get }
|
146
148
|
|
147
|
-
|
148
|
-
|
149
|
+
/// Metadata: An array of localised keywords
|
150
|
+
var keywords: [String: Any]? { get }
|
149
151
|
|
150
|
-
|
151
|
-
|
152
|
+
/// Metadata: An array of localised promotional texts
|
153
|
+
var promotionalText: [String: Any]? { get }
|
152
154
|
|
153
|
-
|
154
|
-
|
155
|
+
/// Metadata: Localised release notes for this version
|
156
|
+
var releaseNotes: String? { get }
|
155
157
|
|
156
|
-
|
157
|
-
|
158
|
+
/// Metadata: Localised privacy url
|
159
|
+
var privacyUrl: String? { get }
|
158
160
|
|
159
|
-
|
160
|
-
|
161
|
+
/// Metadata: Localised Apple TV privacy policy text
|
162
|
+
var appleTvPrivacyPolicy: String? { get }
|
161
163
|
|
162
|
-
|
163
|
-
|
164
|
+
/// Metadata: Localised support url
|
165
|
+
var supportUrl: String? { get }
|
164
166
|
|
165
|
-
|
166
|
-
|
167
|
+
/// Metadata: Localised marketing url
|
168
|
+
var marketingUrl: String? { get }
|
167
169
|
|
168
|
-
|
169
|
-
|
170
|
+
/// Metadata: List of languages to activate
|
171
|
+
var languages: [String]? { get }
|
170
172
|
|
171
|
-
|
172
|
-
|
173
|
+
/// Ignore errors when invalid languages are found in metadata and screenshot directories
|
174
|
+
var ignoreLanguageDirectoryValidation: Bool { get }
|
173
175
|
|
174
|
-
|
175
|
-
|
176
|
+
/// Should precheck check in-app purchases?
|
177
|
+
var precheckIncludeInAppPurchases: Bool { get }
|
176
178
|
|
177
|
-
|
178
|
-
|
179
|
-
|
180
|
-
/// The (spaceship) app ID of the app you want to use/modify
|
181
|
-
var app: String { get }
|
179
|
+
/// The (spaceship) app ID of the app you want to use/modify
|
180
|
+
var app: String { get }
|
182
181
|
}
|
183
182
|
|
184
183
|
extension DeliverfileProtocol {
|
185
|
-
|
186
|
-
|
187
|
-
|
188
|
-
|
189
|
-
|
190
|
-
|
191
|
-
|
192
|
-
|
193
|
-
|
194
|
-
|
195
|
-
|
196
|
-
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
|
234
|
-
|
235
|
-
|
236
|
-
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
242
|
-
|
243
|
-
|
244
|
-
|
184
|
+
var username: String { return "" }
|
185
|
+
var appIdentifier: String? { return nil }
|
186
|
+
var appVersion: String? { return nil }
|
187
|
+
var ipa: String? { return nil }
|
188
|
+
var pkg: String? { return nil }
|
189
|
+
var buildNumber: String? { return nil }
|
190
|
+
var platform: String { return "ios" }
|
191
|
+
var editLive: Bool { return false }
|
192
|
+
var useLiveVersion: Bool { return false }
|
193
|
+
var metadataPath: String? { return nil }
|
194
|
+
var screenshotsPath: String? { return nil }
|
195
|
+
var skipBinaryUpload: Bool { return false }
|
196
|
+
var skipScreenshots: Bool { return false }
|
197
|
+
var skipMetadata: Bool { return false }
|
198
|
+
var skipAppVersionUpdate: Bool { return false }
|
199
|
+
var force: Bool { return false }
|
200
|
+
var overwriteScreenshots: Bool { return false }
|
201
|
+
var submitForReview: Bool { return false }
|
202
|
+
var rejectIfPossible: Bool { return false }
|
203
|
+
var automaticRelease: Bool { return false }
|
204
|
+
var autoReleaseDate: Int? { return nil }
|
205
|
+
var phasedRelease: Bool { return false }
|
206
|
+
var resetRatings: Bool { return false }
|
207
|
+
var priceTier: String? { return nil }
|
208
|
+
var appRatingConfigPath: String? { return nil }
|
209
|
+
var submissionInformation: [String: Any]? { return nil }
|
210
|
+
var teamId: String? { return nil }
|
211
|
+
var teamName: String? { return nil }
|
212
|
+
var devPortalTeamId: String? { return nil }
|
213
|
+
var devPortalTeamName: String? { return nil }
|
214
|
+
var itcProvider: String? { return nil }
|
215
|
+
var runPrecheckBeforeSubmit: Bool { return true }
|
216
|
+
var precheckDefaultRuleLevel: String { return "warn" }
|
217
|
+
var individualMetadataItems: [String] { return [] }
|
218
|
+
var appIcon: String? { return nil }
|
219
|
+
var appleWatchAppIcon: String? { return nil }
|
220
|
+
var copyright: String? { return nil }
|
221
|
+
var primaryCategory: String? { return nil }
|
222
|
+
var secondaryCategory: String? { return nil }
|
223
|
+
var primaryFirstSubCategory: String? { return nil }
|
224
|
+
var primarySecondSubCategory: String? { return nil }
|
225
|
+
var secondaryFirstSubCategory: String? { return nil }
|
226
|
+
var secondarySecondSubCategory: String? { return nil }
|
227
|
+
var tradeRepresentativeContactInformation: [String: Any]? { return nil }
|
228
|
+
var appReviewInformation: [String: Any]? { return nil }
|
229
|
+
var appReviewAttachmentFile: String? { return nil }
|
230
|
+
var description: String? { return nil }
|
231
|
+
var name: String? { return nil }
|
232
|
+
var subtitle: [String: Any]? { return nil }
|
233
|
+
var keywords: [String: Any]? { return nil }
|
234
|
+
var promotionalText: [String: Any]? { return nil }
|
235
|
+
var releaseNotes: String? { return nil }
|
236
|
+
var privacyUrl: String? { return nil }
|
237
|
+
var appleTvPrivacyPolicy: String? { return nil }
|
238
|
+
var supportUrl: String? { return nil }
|
239
|
+
var marketingUrl: String? { return nil }
|
240
|
+
var languages: [String]? { return nil }
|
241
|
+
var ignoreLanguageDirectoryValidation: Bool { return false }
|
242
|
+
var precheckIncludeInAppPurchases: Bool { return true }
|
243
|
+
var app: String { return "" }
|
245
244
|
}
|
246
245
|
|
247
246
|
// Please don't remove the lines below
|
248
247
|
// They are used to detect outdated files
|
249
|
-
// FastlaneRunnerAPIVersion [0.9.
|
248
|
+
// FastlaneRunnerAPIVersion [0.9.24]
|