fastlane 2.175.0 → 2.176.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 +84 -84
- data/deliver/lib/deliver/runner.rb +1 -1
- data/fastlane/lib/fastlane/actions/jazzy.rb +10 -1
- data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +5 -1
- 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 +18 -7
- 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 +5 -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/Brewfile.lock.json +2 -2
- data/pilot/lib/pilot/.build_manager.rb.swp +0 -0
- data/pilot/lib/pilot/build_manager.rb +7 -2
- data/pilot/lib/pilot/options.rb +1 -1
- data/precheck/lib/precheck/runner.rb +1 -1
- data/scan/lib/scan/options.rb +5 -0
- data/scan/lib/scan/runner.rb +27 -0
- data/screengrab/lib/screengrab/runner.rb +1 -2
- data/spaceship/lib/spaceship/two_step_or_factor_client.rb +41 -28
- metadata +17 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7ba261e1e70a178f818c12e9f44a9da7d339da6f103aad678777f0a66592bf97
|
4
|
+
data.tar.gz: f1b3689af027c08af744d5a25a4dedb5b1e96ca89ed61cc30c30756526726117
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f45f74114acc9ad5585743e3a352e75ebc2bb671372206d217c3d5bcb14c79bd7fe672b6b35cb94068bc9dbc66c7942a9afbb27680d37233f37f9c0bc780d7a
|
7
|
+
data.tar.gz: dd59ef529c0ac9f650dfe8afb9ce18ea4dbec6c0b637fb57ff9f52105399558f63186c97b795531536fd557af10ef5b05e3d8010cb40b2444a6e5bbc4368f409
|
data/README.md
CHANGED
@@ -34,125 +34,107 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
34
34
|
<!-- This table is regenerated and resorted on each release -->
|
35
35
|
<table id='team'>
|
36
36
|
<tr>
|
37
|
-
<td id='kohki-miki'>
|
38
|
-
<a href='https://github.com/giginet'>
|
39
|
-
<img src='https://github.com/giginet.png?size=140'>
|
40
|
-
</a>
|
41
|
-
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
42
|
-
</td>
|
43
|
-
<td id='max-ott'>
|
44
|
-
<a href='https://github.com/max-ott'>
|
45
|
-
<img src='https://github.com/max-ott.png?size=140'>
|
46
|
-
</a>
|
47
|
-
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
48
|
-
</td>
|
49
37
|
<td id='matthew-ellis'>
|
50
38
|
<a href='https://github.com/matthewellis'>
|
51
39
|
<img src='https://github.com/matthewellis.png?size=140'>
|
52
40
|
</a>
|
53
41
|
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
54
42
|
</td>
|
55
|
-
<td id='stefan-natchev'>
|
56
|
-
<a href='https://github.com/snatchev'>
|
57
|
-
<img src='https://github.com/snatchev.png?size=140'>
|
58
|
-
</a>
|
59
|
-
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
60
|
-
</td>
|
61
|
-
<td id='josh-holtz'>
|
62
|
-
<a href='https://github.com/joshdholtz'>
|
63
|
-
<img src='https://github.com/joshdholtz.png?size=140'>
|
64
|
-
</a>
|
65
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
66
|
-
</td>
|
67
|
-
</tr>
|
68
|
-
<tr>
|
69
43
|
<td id='maksym-grebenets'>
|
70
44
|
<a href='https://github.com/mgrebenets'>
|
71
45
|
<img src='https://github.com/mgrebenets.png?size=140'>
|
72
46
|
</a>
|
73
47
|
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
74
48
|
</td>
|
75
|
-
<td id='
|
76
|
-
<a href='https://github.com/
|
77
|
-
<img src='https://github.com/
|
78
|
-
</a>
|
79
|
-
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
80
|
-
</td>
|
81
|
-
<td id='danielle-tomlinson'>
|
82
|
-
<a href='https://github.com/endocrimes'>
|
83
|
-
<img src='https://github.com/endocrimes.png?size=140'>
|
49
|
+
<td id='aaron-brager'>
|
50
|
+
<a href='https://github.com/getaaron'>
|
51
|
+
<img src='https://github.com/getaaron.png?size=140'>
|
84
52
|
</a>
|
85
|
-
<h4 align='center'><a href='https://twitter.com/
|
53
|
+
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
86
54
|
</td>
|
87
|
-
<td id='
|
88
|
-
<a href='https://github.com/
|
89
|
-
<img src='https://github.com/
|
55
|
+
<td id='jorge-revuelta-h'>
|
56
|
+
<a href='https://github.com/minuscorp'>
|
57
|
+
<img src='https://github.com/minuscorp.png?size=140'>
|
90
58
|
</a>
|
91
|
-
<h4 align='center'><a href='https://twitter.com/
|
59
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
92
60
|
</td>
|
93
|
-
<td id='
|
94
|
-
<a href='https://github.com/
|
95
|
-
<img src='https://github.com/
|
61
|
+
<td id='felix-krause'>
|
62
|
+
<a href='https://github.com/KrauseFx'>
|
63
|
+
<img src='https://github.com/KrauseFx.png?size=140'>
|
96
64
|
</a>
|
97
|
-
<h4 align='center'><a href='https://twitter.com/
|
65
|
+
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
98
66
|
</td>
|
99
67
|
</tr>
|
100
68
|
<tr>
|
101
|
-
<td id='iulian-onofrei'>
|
102
|
-
<a href='https://github.com/revolter'>
|
103
|
-
<img src='https://github.com/revolter.png?size=140'>
|
104
|
-
</a>
|
105
|
-
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
106
|
-
</td>
|
107
69
|
<td id='jimmy-dee'>
|
108
70
|
<a href='https://github.com/jdee'>
|
109
71
|
<img src='https://github.com/jdee.png?size=140'>
|
110
72
|
</a>
|
111
73
|
<h4 align='center'>Jimmy Dee</h4>
|
112
74
|
</td>
|
113
|
-
<td id='
|
114
|
-
<a href='https://github.com/
|
115
|
-
<img src='https://github.com/
|
75
|
+
<td id='kohki-miki'>
|
76
|
+
<a href='https://github.com/giginet'>
|
77
|
+
<img src='https://github.com/giginet.png?size=140'>
|
116
78
|
</a>
|
117
|
-
<h4 align='center'><a href='https://twitter.com/
|
79
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
118
80
|
</td>
|
119
|
-
<td id='
|
120
|
-
<a href='https://github.com/
|
121
|
-
<img src='https://github.com/
|
81
|
+
<td id='stefan-natchev'>
|
82
|
+
<a href='https://github.com/snatchev'>
|
83
|
+
<img src='https://github.com/snatchev.png?size=140'>
|
122
84
|
</a>
|
123
|
-
<h4 align='center'><a href='https://twitter.com/
|
85
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
124
86
|
</td>
|
125
|
-
<td id='
|
126
|
-
<a href='https://github.com/
|
127
|
-
<img src='https://github.com/
|
87
|
+
<td id='joshua-liebowitz'>
|
88
|
+
<a href='https://github.com/taquitos'>
|
89
|
+
<img src='https://github.com/taquitos.png?size=140'>
|
128
90
|
</a>
|
129
|
-
<h4 align='center'><a href='https://twitter.com/
|
91
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
130
92
|
</td>
|
131
|
-
</tr>
|
132
|
-
<tr>
|
133
93
|
<td id='fumiya-nakamura'>
|
134
94
|
<a href='https://github.com/nafu'>
|
135
95
|
<img src='https://github.com/nafu.png?size=140'>
|
136
96
|
</a>
|
137
97
|
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
138
98
|
</td>
|
139
|
-
|
140
|
-
<
|
141
|
-
<
|
99
|
+
</tr>
|
100
|
+
<tr>
|
101
|
+
<td id='andrew-mcburney'>
|
102
|
+
<a href='https://github.com/armcburney'>
|
103
|
+
<img src='https://github.com/armcburney.png?size=140'>
|
142
104
|
</a>
|
143
|
-
<h4 align='center'><a href='https://twitter.com/
|
105
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
144
106
|
</td>
|
145
|
-
<td id='
|
146
|
-
<a href='https://github.com/
|
147
|
-
<img src='https://github.com/
|
107
|
+
<td id='olivier-halligon'>
|
108
|
+
<a href='https://github.com/AliSoftware'>
|
109
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
148
110
|
</a>
|
149
|
-
<h4 align='center'><a href='https://twitter.com/
|
111
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
150
112
|
</td>
|
151
|
-
<td id='
|
152
|
-
<a href='https://github.com/
|
153
|
-
<img src='https://github.com/
|
113
|
+
<td id='jérôme-lacoste'>
|
114
|
+
<a href='https://github.com/lacostej'>
|
115
|
+
<img src='https://github.com/lacostej.png?size=140'>
|
154
116
|
</a>
|
155
|
-
<h4 align='center'><a href='https://twitter.com/
|
117
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
118
|
+
</td>
|
119
|
+
<td id='jan-piotrowski'>
|
120
|
+
<a href='https://github.com/janpio'>
|
121
|
+
<img src='https://github.com/janpio.png?size=140'>
|
122
|
+
</a>
|
123
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
124
|
+
</td>
|
125
|
+
<td id='danielle-tomlinson'>
|
126
|
+
<a href='https://github.com/endocrimes'>
|
127
|
+
<img src='https://github.com/endocrimes.png?size=140'>
|
128
|
+
</a>
|
129
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
130
|
+
</td>
|
131
|
+
</tr>
|
132
|
+
<tr>
|
133
|
+
<td id='luka-mirosevic'>
|
134
|
+
<a href='https://github.com/lmirosevic'>
|
135
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
136
|
+
</a>
|
137
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
156
138
|
</td>
|
157
139
|
<td id='helmut-januschka'>
|
158
140
|
<a href='https://github.com/hjanuschka'>
|
@@ -160,19 +142,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
160
142
|
</a>
|
161
143
|
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
162
144
|
</td>
|
145
|
+
<td id='max-ott'>
|
146
|
+
<a href='https://github.com/max-ott'>
|
147
|
+
<img src='https://github.com/max-ott.png?size=140'>
|
148
|
+
</a>
|
149
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
150
|
+
</td>
|
151
|
+
<td id='josh-holtz'>
|
152
|
+
<a href='https://github.com/joshdholtz'>
|
153
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
154
|
+
</a>
|
155
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
156
|
+
</td>
|
157
|
+
<td id='iulian-onofrei'>
|
158
|
+
<a href='https://github.com/revolter'>
|
159
|
+
<img src='https://github.com/revolter.png?size=140'>
|
160
|
+
</a>
|
161
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
162
|
+
</td>
|
163
163
|
</tr>
|
164
164
|
<tr>
|
165
|
-
<td id='
|
166
|
-
<a href='https://github.com/
|
167
|
-
<img src='https://github.com/
|
165
|
+
<td id='daniel-jankowski'>
|
166
|
+
<a href='https://github.com/mollyIV'>
|
167
|
+
<img src='https://github.com/mollyIV.png?size=140'>
|
168
168
|
</a>
|
169
|
-
<h4 align='center'><a href='https://twitter.com/
|
169
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
170
170
|
</td>
|
171
|
-
<td id='
|
172
|
-
<a href='https://github.com/
|
173
|
-
<img src='https://github.com/
|
171
|
+
<td id='manu-wallner'>
|
172
|
+
<a href='https://github.com/milch'>
|
173
|
+
<img src='https://github.com/milch.png?size=140'>
|
174
174
|
</a>
|
175
|
-
<h4 align='center'><a href='https://twitter.com/
|
175
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
176
176
|
</td>
|
177
177
|
</table>
|
178
178
|
|
@@ -83,7 +83,7 @@ module Deliver
|
|
83
83
|
|
84
84
|
if options[:api_key] || options[:api_key_path]
|
85
85
|
if options[:precheck_include_in_app_purchases]
|
86
|
-
UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck or use Apple ID login")
|
86
|
+
UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck, disable the precheck step in your build step, or use Apple ID login")
|
87
87
|
end
|
88
88
|
|
89
89
|
precheck_options[:api_key] = options[:api_key]
|
@@ -5,6 +5,7 @@ module Fastlane
|
|
5
5
|
Actions.verify_gem!('jazzy')
|
6
6
|
command = "jazzy"
|
7
7
|
command << " --config #{params[:config]}" if params[:config]
|
8
|
+
command << " --module-version #{params[:module_version]}" if params[:module_version]
|
8
9
|
Actions.sh(command)
|
9
10
|
end
|
10
11
|
|
@@ -24,6 +25,13 @@ module Fastlane
|
|
24
25
|
description: 'Path to jazzy config file',
|
25
26
|
is_string: true,
|
26
27
|
optional: true
|
28
|
+
),
|
29
|
+
FastlaneCore::ConfigItem.new(
|
30
|
+
key: :module_version,
|
31
|
+
env_name: 'FL_JAZZY_MODULE_VERSION',
|
32
|
+
description: 'Version string to use as part of the the default docs title and inside the docset',
|
33
|
+
is_string: true,
|
34
|
+
optional: true
|
27
35
|
)
|
28
36
|
]
|
29
37
|
end
|
@@ -44,7 +52,8 @@ module Fastlane
|
|
44
52
|
|
45
53
|
def self.example_code
|
46
54
|
[
|
47
|
-
'jazzy'
|
55
|
+
'jazzy',
|
56
|
+
'jazzy(config: ".jazzy.yaml", module_version: "2.1.37")'
|
48
57
|
]
|
49
58
|
end
|
50
59
|
|
@@ -22,7 +22,11 @@ module Fastlane
|
|
22
22
|
return values if Helper.test?
|
23
23
|
|
24
24
|
if distribute_only
|
25
|
-
Pilot::BuildManager.new
|
25
|
+
build_manager = Pilot::BuildManager.new
|
26
|
+
build_manager.start(values, should_login: true)
|
27
|
+
|
28
|
+
build_manager.wait_for_build_processing_to_be_complete(false) unless values[:skip_waiting_for_build_processing]
|
29
|
+
build_manager.distribute(values) # we already have the finished config
|
26
30
|
else
|
27
31
|
Pilot::BuildManager.new.upload(values) # we already have the finished config
|
28
32
|
end
|
@@ -4680,10 +4680,15 @@ public func ipa(workspace: String? = nil,
|
|
4680
4680
|
/**
|
4681
4681
|
Generate docs using Jazzy
|
4682
4682
|
|
4683
|
-
-
|
4683
|
+
- parameters:
|
4684
|
+
- config: Path to jazzy config file
|
4685
|
+
- moduleVersion: Version string to use as part of the the default docs title and inside the docset
|
4684
4686
|
*/
|
4685
|
-
public func jazzy(config: String? = nil
|
4686
|
-
|
4687
|
+
public func jazzy(config: String? = nil,
|
4688
|
+
moduleVersion: String? = nil)
|
4689
|
+
{
|
4690
|
+
let command = RubyCommand(commandID: "", methodName: "jazzy", className: nil, args: [RubyCommand.Argument(name: "config", value: config),
|
4691
|
+
RubyCommand.Argument(name: "module_version", value: moduleVersion)])
|
4687
4692
|
_ = runner.executeCommand(command)
|
4688
4693
|
}
|
4689
4694
|
|
@@ -5457,7 +5462,7 @@ public func pilot(apiKeyPath: String? = nil,
|
|
5457
5462
|
appPlatform: String = "ios",
|
5458
5463
|
appleId: String? = nil,
|
5459
5464
|
ipa: String? = nil,
|
5460
|
-
demoAccountRequired: Bool =
|
5465
|
+
demoAccountRequired: Bool? = nil,
|
5461
5466
|
betaAppReviewInfo: [String: Any]? = nil,
|
5462
5467
|
localizedAppInfo: [String: Any]? = nil,
|
5463
5468
|
betaAppDescription: String? = nil,
|
@@ -6214,6 +6219,7 @@ public func rubyVersion() {
|
|
6214
6219
|
- xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
|
6215
6220
|
- derivedDataPath: The directory where build products and other derived data will go
|
6216
6221
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
6222
|
+
- outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
|
6217
6223
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
6218
6224
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
6219
6225
|
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
@@ -6285,6 +6291,7 @@ public func runTests(workspace: String? = nil,
|
|
6285
6291
|
xcprettyArgs: String? = nil,
|
6286
6292
|
derivedDataPath: String? = nil,
|
6287
6293
|
shouldZipBuildProducts: Bool = false,
|
6294
|
+
outputXctestrun: Bool = false,
|
6288
6295
|
resultBundle: Bool = false,
|
6289
6296
|
useClangReportName: Bool = false,
|
6290
6297
|
concurrentWorkers: Int? = nil,
|
@@ -6354,6 +6361,7 @@ public func runTests(workspace: String? = nil,
|
|
6354
6361
|
RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
|
6355
6362
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
6356
6363
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
6364
|
+
RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
|
6357
6365
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
6358
6366
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
6359
6367
|
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
@@ -6505,6 +6513,7 @@ public func say(text: Any,
|
|
6505
6513
|
- xcprettyArgs: Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
|
6506
6514
|
- derivedDataPath: The directory where build products and other derived data will go
|
6507
6515
|
- shouldZipBuildProducts: Should zip the derived data build products and place in output path?
|
6516
|
+
- outputXctestrun: Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
|
6508
6517
|
- resultBundle: Should an Xcode result bundle be generated in the output directory
|
6509
6518
|
- useClangReportName: Generate the json compilation database with clang naming convention (compile_commands.json)
|
6510
6519
|
- concurrentWorkers: Specify the exact number of test runners that will be spawned during parallel testing. Equivalent to -parallel-testing-worker-count
|
@@ -6576,6 +6585,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6576
6585
|
xcprettyArgs: Any? = scanfile.xcprettyArgs,
|
6577
6586
|
derivedDataPath: Any? = scanfile.derivedDataPath,
|
6578
6587
|
shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
|
6588
|
+
outputXctestrun: Bool = scanfile.outputXctestrun,
|
6579
6589
|
resultBundle: Bool = scanfile.resultBundle,
|
6580
6590
|
useClangReportName: Bool = scanfile.useClangReportName,
|
6581
6591
|
concurrentWorkers: Int? = scanfile.concurrentWorkers,
|
@@ -6645,6 +6655,7 @@ public func scan(workspace: Any? = scanfile.workspace,
|
|
6645
6655
|
RubyCommand.Argument(name: "xcpretty_args", value: xcprettyArgs),
|
6646
6656
|
RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
|
6647
6657
|
RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
|
6658
|
+
RubyCommand.Argument(name: "output_xctestrun", value: outputXctestrun),
|
6648
6659
|
RubyCommand.Argument(name: "result_bundle", value: resultBundle),
|
6649
6660
|
RubyCommand.Argument(name: "use_clang_report_name", value: useClangReportName),
|
6650
6661
|
RubyCommand.Argument(name: "concurrent_workers", value: concurrentWorkers),
|
@@ -8134,7 +8145,7 @@ public func testflight(apiKeyPath: String? = nil,
|
|
8134
8145
|
appPlatform: String = "ios",
|
8135
8146
|
appleId: String? = nil,
|
8136
8147
|
ipa: String? = nil,
|
8137
|
-
demoAccountRequired: Bool =
|
8148
|
+
demoAccountRequired: Bool? = nil,
|
8138
8149
|
betaAppReviewInfo: [String: Any]? = nil,
|
8139
8150
|
localizedAppInfo: [String: Any]? = nil,
|
8140
8151
|
betaAppDescription: String? = nil,
|
@@ -9127,7 +9138,7 @@ public func uploadToTestflight(apiKeyPath: String? = nil,
|
|
9127
9138
|
appPlatform: String = "ios",
|
9128
9139
|
appleId: String? = nil,
|
9129
9140
|
ipa: String? = nil,
|
9130
|
-
demoAccountRequired: Bool =
|
9141
|
+
demoAccountRequired: Bool? = nil,
|
9131
9142
|
betaAppReviewInfo: [String: Any]? = nil,
|
9132
9143
|
localizedAppInfo: [String: Any]? = nil,
|
9133
9144
|
betaAppDescription: String? = nil,
|
@@ -9645,4 +9656,4 @@ public let snapshotfile = Snapshotfile()
|
|
9645
9656
|
|
9646
9657
|
// Please don't remove the lines below
|
9647
9658
|
// They are used to detect outdated files
|
9648
|
-
// FastlaneRunnerAPIVersion [0.9.
|
9659
|
+
// FastlaneRunnerAPIVersion [0.9.112]
|
@@ -110,6 +110,9 @@ public protocol ScanfileProtocol: class {
|
|
110
110
|
/// Should zip the derived data build products and place in output path?
|
111
111
|
var shouldZipBuildProducts: Bool { get }
|
112
112
|
|
113
|
+
/// Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?
|
114
|
+
var outputXctestrun: Bool { get }
|
115
|
+
|
113
116
|
/// Should an Xcode result bundle be generated in the output directory
|
114
117
|
var resultBundle: Bool { get }
|
115
118
|
|
@@ -244,6 +247,7 @@ public extension ScanfileProtocol {
|
|
244
247
|
var xcprettyArgs: String? { return nil }
|
245
248
|
var derivedDataPath: String? { return nil }
|
246
249
|
var shouldZipBuildProducts: Bool { return false }
|
250
|
+
var outputXctestrun: Bool { return false }
|
247
251
|
var resultBundle: Bool { return false }
|
248
252
|
var useClangReportName: Bool { return false }
|
249
253
|
var concurrentWorkers: Int? { return nil }
|
@@ -280,4 +284,4 @@ public extension ScanfileProtocol {
|
|
280
284
|
|
281
285
|
// Please don't remove the lines below
|
282
286
|
// They are used to detect outdated files
|
283
|
-
// FastlaneRunnerAPIVersion [0.9.
|
287
|
+
// FastlaneRunnerAPIVersion [0.9.67]
|
@@ -33,9 +33,9 @@
|
|
33
33
|
"system": {
|
34
34
|
"macos": {
|
35
35
|
"catalina": {
|
36
|
-
"HOMEBREW_VERSION": "3.0.
|
36
|
+
"HOMEBREW_VERSION": "3.0.2",
|
37
37
|
"HOMEBREW_PREFIX": "/usr/local",
|
38
|
-
"Homebrew/homebrew-core": "
|
38
|
+
"Homebrew/homebrew-core": "372d8a99773af6b309354856d1295825ab43d7e0",
|
39
39
|
"CLT": "11.0.33.12",
|
40
40
|
"Xcode": "12.2",
|
41
41
|
"macOS": "10.15.7"
|
Binary file
|
@@ -90,8 +90,13 @@ module Pilot
|
|
90
90
|
|
91
91
|
def wait_for_build_processing_to_be_complete(return_when_build_appears = false)
|
92
92
|
platform = fetch_app_platform
|
93
|
-
|
94
|
-
|
93
|
+
if config[:ipa]
|
94
|
+
app_version = FastlaneCore::IpaFileAnalyser.fetch_app_version(config[:ipa])
|
95
|
+
app_build = FastlaneCore::IpaFileAnalyser.fetch_app_build(config[:ipa])
|
96
|
+
else
|
97
|
+
app_version = config[:app_version]
|
98
|
+
app_build = config[:build_number]
|
99
|
+
end
|
95
100
|
|
96
101
|
latest_build = FastlaneCore::BuildWatcher.wait_for_build_processing_to_be_complete(
|
97
102
|
app_id: app.id,
|
data/pilot/lib/pilot/options.rb
CHANGED
@@ -88,7 +88,7 @@ module Pilot
|
|
88
88
|
type: Boolean,
|
89
89
|
env_name: "DEMO_ACCOUNT_REQUIRED",
|
90
90
|
description: "Do you need a demo account when Apple does review?",
|
91
|
-
|
91
|
+
optional: true),
|
92
92
|
FastlaneCore::ConfigItem.new(key: :beta_app_review_info,
|
93
93
|
type: Hash,
|
94
94
|
env_name: "PILOT_BETA_APP_REVIEW_INFO",
|
@@ -26,7 +26,7 @@ module Precheck
|
|
26
26
|
# There is also a check in Deliver::Runner for this.
|
27
27
|
# Please remove check in Deliver when the API support IAPs.
|
28
28
|
if Precheck.config[:include_in_app_purchases]
|
29
|
-
UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck or use Apple ID login")
|
29
|
+
UI.user_error!("Precheck cannot check In-app purchases with the App Store Connect API Key (yet). Exclude In-app purchases from precheck, disable the precheck step in your build step, or use Apple ID login")
|
30
30
|
end
|
31
31
|
|
32
32
|
UI.message("Creating authorization token for App Store Connect API")
|
data/scan/lib/scan/options.rb
CHANGED
@@ -269,6 +269,11 @@ module Scan
|
|
269
269
|
optional: true,
|
270
270
|
is_string: false,
|
271
271
|
default_value: false),
|
272
|
+
FastlaneCore::ConfigItem.new(key: :output_xctestrun,
|
273
|
+
type: Boolean,
|
274
|
+
env_name: "SCAN_OUTPUT_XCTESTRUN",
|
275
|
+
description: "Should provide additional copy of .xctestrun file (settings.xctestrun) and place in output path?",
|
276
|
+
default_value: false),
|
272
277
|
FastlaneCore::ConfigItem.new(key: :result_bundle,
|
273
278
|
short_option: "-z",
|
274
279
|
env_name: "SCAN_RESULT_BUNDLE",
|
data/scan/lib/scan/runner.rb
CHANGED
@@ -110,6 +110,7 @@ module Scan
|
|
110
110
|
|
111
111
|
copy_simulator_logs
|
112
112
|
zip_build_products
|
113
|
+
copy_xctestrun
|
113
114
|
|
114
115
|
if result[:failures] > 0
|
115
116
|
open_report
|
@@ -150,6 +151,32 @@ module Scan
|
|
150
151
|
UI.message("Successfully zipped build products: #{output_path}")
|
151
152
|
end
|
152
153
|
|
154
|
+
def copy_xctestrun
|
155
|
+
return unless Scan.config[:output_xctestrun]
|
156
|
+
|
157
|
+
# Gets :derived_data_path/Build/Products directory for coping .xctestrun file
|
158
|
+
derived_data_path = Scan.config[:derived_data_path]
|
159
|
+
path = File.join(derived_data_path, "Build", "Products")
|
160
|
+
|
161
|
+
# Gets absolute path of output directory
|
162
|
+
output_directory = File.absolute_path(Scan.config[:output_directory])
|
163
|
+
output_path = File.join(output_directory, "settings.xctestrun")
|
164
|
+
|
165
|
+
# Caching path for action to put into lane_context
|
166
|
+
Scan.cache[:output_xctestrun] = output_path
|
167
|
+
|
168
|
+
# Copy .xctestrun file and moves it to output directory
|
169
|
+
UI.message("Copying .xctestrun file")
|
170
|
+
xctestrun_file = Dir.glob("#{path}/*.xctestrun").first
|
171
|
+
|
172
|
+
if xctestrun_file
|
173
|
+
FileUtils.cp(xctestrun_file, output_path)
|
174
|
+
UI.message("Successfully copied xctestrun file: #{output_path}")
|
175
|
+
else
|
176
|
+
UI.user_error!("Could not find .xctextrun file to copy")
|
177
|
+
end
|
178
|
+
end
|
179
|
+
|
153
180
|
def test_results
|
154
181
|
temp_junit_report = Scan.cache[:temp_junit_report]
|
155
182
|
return File.read(temp_junit_report) if temp_junit_report && File.file?(temp_junit_report)
|
@@ -392,13 +392,12 @@ module Screengrab
|
|
392
392
|
end
|
393
393
|
|
394
394
|
def run_adb_command(command, print_all: false, print_command: false, raise_errors: true)
|
395
|
-
adb_path = @android_env.adb_path.chomp("adb")
|
396
395
|
adb_host = @config[:adb_host]
|
397
396
|
host = adb_host.nil? ? '' : "-H #{adb_host} "
|
398
397
|
output = ''
|
399
398
|
begin
|
400
399
|
errout = nil
|
401
|
-
cmdout = @executor.execute(command: adb_path + "
|
400
|
+
cmdout = @executor.execute(command: @android_env.adb_path + " " + host + command,
|
402
401
|
print_all: print_all,
|
403
402
|
print_command: print_command,
|
404
403
|
error: raise_errors ? nil : proc { |out, status| errout = out }) || ''
|
@@ -135,7 +135,7 @@ module Spaceship
|
|
135
135
|
|
136
136
|
phone_number = env_2fa_sms_default_phone_number
|
137
137
|
phone_id = phone_id_from_number(response.body["trustedPhoneNumbers"], phone_number)
|
138
|
-
push_mode =
|
138
|
+
push_mode = push_mode_from_number(response.body["trustedPhoneNumbers"], phone_number)
|
139
139
|
# don't request sms if no trusted devices and env default is the only trusted number,
|
140
140
|
# code was automatically sent
|
141
141
|
should_request_code = !sms_automatically_sent(response)
|
@@ -234,34 +234,8 @@ module Spaceship
|
|
234
234
|
end
|
235
235
|
|
236
236
|
def phone_id_from_number(phone_numbers, phone_number)
|
237
|
-
characters_to_remove_from_phone_numbers = ' \-()"'
|
238
|
-
|
239
|
-
# start with e.g. +49 162 1234585 or +1-123-456-7866
|
240
|
-
phone_number = phone_number.tr(characters_to_remove_from_phone_numbers, '')
|
241
|
-
# cleaned: +491621234585 or +11234567866
|
242
|
-
|
243
237
|
phone_numbers.each do |phone|
|
244
|
-
|
245
|
-
# start with: +49 •••• •••••85 or +1 (•••) •••-••66
|
246
|
-
number_with_dialcode_masked = phone['numberWithDialCode'].tr(characters_to_remove_from_phone_numbers, '')
|
247
|
-
# cleaned: +49•••••••••85 or +1••••••••66
|
248
|
-
# rubocop:enable Style/AsciiComments
|
249
|
-
|
250
|
-
maskings_count = number_with_dialcode_masked.count('•') # => 9 or 8
|
251
|
-
pattern = /^([0-9+]{2,4})([•]{#{maskings_count}})([0-9]{2})$/
|
252
|
-
# following regex: range from maskings_count-2 because sometimes the masked number has 1 or 2 dots more than the actual number
|
253
|
-
# e.g. https://github.com/fastlane/fastlane/issues/14969
|
254
|
-
replacement = "\\1([0-9]{#{maskings_count - 2},#{maskings_count}})\\3"
|
255
|
-
number_with_dialcode_regex_part = number_with_dialcode_masked.gsub(pattern, replacement)
|
256
|
-
# => +49([0-9]{8,9})85 or +1([0-9]{7,8})66
|
257
|
-
|
258
|
-
backslash = '\\'
|
259
|
-
number_with_dialcode_regex_part = backslash + number_with_dialcode_regex_part
|
260
|
-
number_with_dialcode_regex = /^#{number_with_dialcode_regex_part}$/
|
261
|
-
# => /^\+49([0-9]{8})85$/ or /^\+1([0-9]{7,8})66$/
|
262
|
-
|
263
|
-
return phone['id'] if phone_number =~ number_with_dialcode_regex
|
264
|
-
# +491621234585 matches /^\+49([0-9]{8})85$/
|
238
|
+
return phone['id'] if match_phone_to_masked_phone(phone_number, phone['numberWithDialCode'])
|
265
239
|
end
|
266
240
|
|
267
241
|
# Handle case of phone_number not existing in phone_numbers because ENV var is wrong or matcher is broken
|
@@ -272,6 +246,45 @@ If it is, please open an issue at https://github.com/fastlane/fastlane/issues/ne
|
|
272
246
|
)
|
273
247
|
end
|
274
248
|
|
249
|
+
def push_mode_from_number(phone_numbers, phone_number)
|
250
|
+
phone_numbers.each do |phone|
|
251
|
+
return phone['pushMode'] if match_phone_to_masked_phone(phone_number, phone['numberWithDialCode'])
|
252
|
+
end
|
253
|
+
|
254
|
+
# If no pushMode was supplied, assume sms
|
255
|
+
return "sms"
|
256
|
+
end
|
257
|
+
|
258
|
+
def match_phone_to_masked_phone(phone_number, masked_number)
|
259
|
+
characters_to_remove_from_phone_numbers = ' \-()"'
|
260
|
+
|
261
|
+
# start with e.g. +49 162 1234585 or +1-123-456-7866
|
262
|
+
phone_number = phone_number.tr(characters_to_remove_from_phone_numbers, '')
|
263
|
+
# cleaned: +491621234585 or +11234567866
|
264
|
+
|
265
|
+
# rubocop:disable Style/AsciiComments
|
266
|
+
# start with: +49 •••• •••••85 or +1 (•••) •••-••66
|
267
|
+
number_with_dialcode_masked = masked_number.tr(characters_to_remove_from_phone_numbers, '')
|
268
|
+
# cleaned: +49•••••••••85 or +1••••••••66
|
269
|
+
# rubocop:enable Style/AsciiComments
|
270
|
+
|
271
|
+
maskings_count = number_with_dialcode_masked.count('•') # => 9 or 8
|
272
|
+
pattern = /^([0-9+]{2,4})([•]{#{maskings_count}})([0-9]{2})$/
|
273
|
+
# following regex: range from maskings_count-2 because sometimes the masked number has 1 or 2 dots more than the actual number
|
274
|
+
# e.g. https://github.com/fastlane/fastlane/issues/14969
|
275
|
+
replacement = "\\1([0-9]{#{maskings_count - 2},#{maskings_count}})\\3"
|
276
|
+
number_with_dialcode_regex_part = number_with_dialcode_masked.gsub(pattern, replacement)
|
277
|
+
# => +49([0-9]{8,9})85 or +1([0-9]{7,8})66
|
278
|
+
|
279
|
+
backslash = '\\'
|
280
|
+
number_with_dialcode_regex_part = backslash + number_with_dialcode_regex_part
|
281
|
+
number_with_dialcode_regex = /^#{number_with_dialcode_regex_part}$/
|
282
|
+
# => /^\+49([0-9]{8})85$/ or /^\+1([0-9]{7,8})66$/
|
283
|
+
|
284
|
+
return phone_number =~ number_with_dialcode_regex
|
285
|
+
# +491621234585 matches /^\+49([0-9]{8})85$/
|
286
|
+
end
|
287
|
+
|
275
288
|
def phone_id_from_masked_number(phone_numbers, masked_number)
|
276
289
|
phone_numbers.each do |phone|
|
277
290
|
return phone['id'] if phone['numberWithDialCode'] == masked_number
|
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.176.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
- Joshua Liebowitz
|
8
|
-
- Felix Krause
|
9
|
-
- Jorge Revuelta H
|
10
|
-
- Iulian Onofrei
|
11
7
|
- Jan Piotrowski
|
12
|
-
-
|
13
|
-
- Max Ott
|
14
|
-
- Helmut Januschka
|
8
|
+
- Stefan Natchev
|
15
9
|
- Aaron Brager
|
10
|
+
- Manu Wallner
|
16
11
|
- Jérôme Lacoste
|
17
|
-
- Luka Mirosevic
|
18
|
-
- Danielle Tomlinson
|
19
|
-
- Matthew Ellis
|
20
|
-
- Stefan Natchev
|
21
|
-
- Fumiya Nakamura
|
22
12
|
- Olivier Halligon
|
13
|
+
- Helmut Januschka
|
14
|
+
- Jorge Revuelta H
|
15
|
+
- Danielle Tomlinson
|
16
|
+
- Jimmy Dee
|
17
|
+
- Felix Krause
|
23
18
|
- Andrew McBurney
|
19
|
+
- Fumiya Nakamura
|
20
|
+
- Daniel Jankowski
|
24
21
|
- Maksym Grebenets
|
22
|
+
- Iulian Onofrei
|
25
23
|
- Josh Holtz
|
26
|
-
-
|
24
|
+
- Max Ott
|
25
|
+
- Luka Mirosevic
|
26
|
+
- Joshua Liebowitz
|
27
27
|
- Kohki Miki
|
28
|
-
-
|
28
|
+
- Matthew Ellis
|
29
29
|
autorequire:
|
30
30
|
bindir: bin
|
31
31
|
cert_chain: []
|
32
|
-
date: 2021-02-
|
32
|
+
date: 2021-02-24 00:00:00.000000000 Z
|
33
33
|
dependencies:
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: slack-notifier
|
@@ -1514,6 +1514,7 @@ files:
|
|
1514
1514
|
- pem/lib/pem/options.rb
|
1515
1515
|
- pilot/README.md
|
1516
1516
|
- pilot/lib/pilot.rb
|
1517
|
+
- pilot/lib/pilot/.build_manager.rb.swp
|
1517
1518
|
- pilot/lib/pilot/build_manager.rb
|
1518
1519
|
- pilot/lib/pilot/commands_generator.rb
|
1519
1520
|
- pilot/lib/pilot/features.rb
|