fastlane 2.221.1 → 2.223.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 +98 -98
- data/deliver/lib/deliver/options.rb +1 -1
- data/deliver/lib/deliver/runner.rb +11 -2
- data/fastlane/lib/fastlane/actions/app_store_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +7 -3
- data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +1 -0
- data/fastlane/lib/fastlane/actions/download_dsyms.rb +2 -2
- data/fastlane/lib/fastlane/actions/ensure_git_status_clean.rb +16 -1
- data/fastlane/lib/fastlane/actions/latest_testflight_build_number.rb +1 -1
- data/fastlane/lib/fastlane/actions/set_changelog.rb +3 -3
- data/fastlane/lib/fastlane/actions/slack.rb +9 -2
- data/fastlane/lib/fastlane/actions/testfairy.rb +9 -1
- data/fastlane/lib/fastlane/fast_file.rb +8 -2
- data/fastlane/lib/fastlane/helper/git_helper.rb +4 -2
- data/fastlane/lib/fastlane/notification/slack.rb +3 -2
- 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 +81 -21
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +5 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/MatchfileProtocol.swift +5 -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 +5 -1
- data/fastlane/swift/formatting/Brewfile.lock.json +24 -19
- data/fastlane/swift/formatting/Rakefile +1 -0
- data/fastlane_core/lib/fastlane_core/project.rb +1 -0
- data/gym/lib/gym/generators/build_command_generator.rb +1 -1
- data/gym/lib/gym/options.rb +10 -1
- data/match/lib/match/change_password.rb +2 -1
- data/match/lib/match/encryption/encryption.rb +2 -2
- data/match/lib/match/encryption/openssl.rb +10 -5
- data/match/lib/match/importer.rb +2 -1
- data/match/lib/match/nuke.rb +2 -1
- data/match/lib/match/options.rb +5 -0
- data/match/lib/match/runner.rb +2 -1
- data/pilot/lib/pilot/build_manager.rb +9 -0
- data/scan/lib/scan/module.rb +1 -1
- data/scan/lib/scan/options.rb +10 -1
- data/snapshot/lib/snapshot/options.rb +9 -0
- data/spaceship/lib/spaceship/connect_api/models/app.rb +10 -0
- data/spaceship/lib/spaceship/connect_api/models/app_availability.rb +23 -0
- data/spaceship/lib/spaceship/connect_api/models/territory_availability.rb +62 -0
- data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +9 -0
- data/spaceship/lib/spaceship/connect_api.rb +2 -0
- data/spaceship/lib/spaceship/tunes/application.rb +1 -1
- data/spaceship/lib/spaceship/tunes/tunes_client.rb +2 -0
- data/trainer/lib/trainer/test_parser.rb +27 -2
- metadata +22 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 32c31c8cdb5d22c28c22c8c5e87a18bb2b68312b36ea0b313e5da9cfb5ae599d
|
4
|
+
data.tar.gz: 6248f389a595ffe2b5769b9f948e24f4e350ec086e989205708c0cfa4155301f
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: db33d67f27de67d2d5a33a0de04eec412405e6d01f4f879bda83475ff75fd546a61ebe0240011ba9ff9ec992a45347bf5fd6e859da1123529d9cead052ef77eb
|
7
|
+
data.tar.gz: 2caa48a245eeaf5a7a85c2c35c7cb32b8c1871b37a106fb124c995e3951bd7b781d51c3bf269d85ca4e34e4cc85be5fae538e896a24c5d20a6d4ae63ce6ae237
|
data/README.md
CHANGED
@@ -35,49 +35,55 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
35
35
|
<!-- This table is regenerated and resorted on each release -->
|
36
36
|
<table id='team'>
|
37
37
|
<tr>
|
38
|
-
<td id='
|
39
|
-
<a href='https://github.com/
|
40
|
-
<img src='https://github.com/
|
38
|
+
<td id='iulian-onofrei'>
|
39
|
+
<a href='https://github.com/revolter'>
|
40
|
+
<img src='https://github.com/revolter.png' width='140px;'>
|
41
41
|
</a>
|
42
|
-
<h4 align='center'><a href='https://twitter.com/
|
42
|
+
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
43
43
|
</td>
|
44
|
-
<td id='
|
45
|
-
<a href='https://github.com/
|
46
|
-
<img src='https://github.com/
|
44
|
+
<td id='josh-holtz'>
|
45
|
+
<a href='https://github.com/joshdholtz'>
|
46
|
+
<img src='https://github.com/joshdholtz.png' width='140px;'>
|
47
47
|
</a>
|
48
|
-
<h4 align='center'><a href='https://twitter.com/
|
48
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
49
49
|
</td>
|
50
|
-
<td id='
|
51
|
-
<a href='https://github.com/
|
52
|
-
<img src='https://github.com/
|
50
|
+
<td id='kohki-miki'>
|
51
|
+
<a href='https://github.com/giginet'>
|
52
|
+
<img src='https://github.com/giginet.png' width='140px;'>
|
53
53
|
</a>
|
54
|
-
<h4 align='center'><a href='https://twitter.com/
|
54
|
+
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
55
55
|
</td>
|
56
|
-
<td id='
|
57
|
-
<a href='https://github.com/
|
58
|
-
<img src='https://github.com/
|
56
|
+
<td id='łukasz-grabowski'>
|
57
|
+
<a href='https://github.com/lucgrabowski'>
|
58
|
+
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
59
59
|
</a>
|
60
|
-
<h4 align='center'
|
60
|
+
<h4 align='center'>Łukasz Grabowski</h4>
|
61
|
+
</td>
|
62
|
+
<td id='manu-wallner'>
|
63
|
+
<a href='https://github.com/milch'>
|
64
|
+
<img src='https://github.com/milch.png' width='140px;'>
|
65
|
+
</a>
|
66
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
61
67
|
</td>
|
68
|
+
</tr>
|
69
|
+
<tr>
|
62
70
|
<td id='fumiya-nakamura'>
|
63
71
|
<a href='https://github.com/nafu'>
|
64
72
|
<img src='https://github.com/nafu.png' width='140px;'>
|
65
73
|
</a>
|
66
74
|
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
67
75
|
</td>
|
68
|
-
|
69
|
-
<
|
70
|
-
<
|
71
|
-
<a href='https://github.com/AliSoftware'>
|
72
|
-
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
76
|
+
<td id='stefan-natchev'>
|
77
|
+
<a href='https://github.com/snatchev'>
|
78
|
+
<img src='https://github.com/snatchev.png' width='140px;'>
|
73
79
|
</a>
|
74
|
-
<h4 align='center'><a href='https://twitter.com/
|
80
|
+
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
75
81
|
</td>
|
76
|
-
<td id='
|
77
|
-
<a href='https://github.com/
|
78
|
-
<img src='https://github.com/
|
82
|
+
<td id='jan-piotrowski'>
|
83
|
+
<a href='https://github.com/janpio'>
|
84
|
+
<img src='https://github.com/janpio.png' width='140px;'>
|
79
85
|
</a>
|
80
|
-
<h4 align='center'><a href='https://twitter.com/
|
86
|
+
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
81
87
|
</td>
|
82
88
|
<td id='felix-krause'>
|
83
89
|
<a href='https://github.com/KrauseFx'>
|
@@ -85,69 +91,51 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
85
91
|
</a>
|
86
92
|
<h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
|
87
93
|
</td>
|
88
|
-
<td id='
|
89
|
-
<a href='https://github.com/
|
90
|
-
<img src='https://github.com/
|
91
|
-
</a>
|
92
|
-
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
93
|
-
</td>
|
94
|
-
<td id='jimmy-dee'>
|
95
|
-
<a href='https://github.com/jdee'>
|
96
|
-
<img src='https://github.com/jdee.png' width='140px;'>
|
94
|
+
<td id='olivier-halligon'>
|
95
|
+
<a href='https://github.com/AliSoftware'>
|
96
|
+
<img src='https://github.com/AliSoftware.png' width='140px;'>
|
97
97
|
</a>
|
98
|
-
<h4 align='center'>
|
98
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
99
99
|
</td>
|
100
100
|
</tr>
|
101
101
|
<tr>
|
102
|
-
<td id='
|
103
|
-
<a href='https://github.com/
|
104
|
-
<img src='https://github.com/
|
102
|
+
<td id='roger-oba'>
|
103
|
+
<a href='https://github.com/rogerluan'>
|
104
|
+
<img src='https://github.com/rogerluan.png' width='140px;'>
|
105
105
|
</a>
|
106
|
-
<h4 align='center'><a href='https://twitter.com/
|
106
|
+
<h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
|
107
107
|
</td>
|
108
|
-
<td id='
|
109
|
-
<a href='https://github.com/
|
110
|
-
<img src='https://github.com/
|
108
|
+
<td id='maksym-grebenets'>
|
109
|
+
<a href='https://github.com/mgrebenets'>
|
110
|
+
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
111
111
|
</a>
|
112
|
-
<h4 align='center'><a href='https://twitter.com/
|
112
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
113
113
|
</td>
|
114
|
-
<td id='
|
115
|
-
<a href='https://github.com/
|
116
|
-
<img src='https://github.com/
|
114
|
+
<td id='luka-mirosevic'>
|
115
|
+
<a href='https://github.com/lmirosevic'>
|
116
|
+
<img src='https://github.com/lmirosevic.png' width='140px;'>
|
117
117
|
</a>
|
118
|
-
<h4 align='center'><a href='https://twitter.com/
|
118
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
119
119
|
</td>
|
120
|
-
<td id='
|
121
|
-
<a href='https://github.com/
|
122
|
-
<img src='https://github.com/
|
120
|
+
<td id='max-ott'>
|
121
|
+
<a href='https://github.com/max-ott'>
|
122
|
+
<img src='https://github.com/max-ott.png' width='140px;'>
|
123
123
|
</a>
|
124
|
-
<h4 align='center'><a href='https://twitter.com/
|
124
|
+
<h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
|
125
125
|
</td>
|
126
|
-
<td id='
|
127
|
-
<a href='https://github.com/
|
128
|
-
<img src='https://github.com/
|
126
|
+
<td id='joshua-liebowitz'>
|
127
|
+
<a href='https://github.com/taquitos'>
|
128
|
+
<img src='https://github.com/taquitos.png' width='140px;'>
|
129
129
|
</a>
|
130
|
-
<h4 align='center'><a href='https://twitter.com/
|
130
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
131
131
|
</td>
|
132
132
|
</tr>
|
133
133
|
<tr>
|
134
|
-
<td id='
|
135
|
-
<a href='https://github.com/
|
136
|
-
<img src='https://github.com/
|
137
|
-
</a>
|
138
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
139
|
-
</td>
|
140
|
-
<td id='łukasz-grabowski'>
|
141
|
-
<a href='https://github.com/lucgrabowski'>
|
142
|
-
<img src='https://github.com/lucgrabowski.png' width='140px;'>
|
143
|
-
</a>
|
144
|
-
<h4 align='center'>Łukasz Grabowski</h4>
|
145
|
-
</td>
|
146
|
-
<td id='satoshi-namai'>
|
147
|
-
<a href='https://github.com/ainame'>
|
148
|
-
<img src='https://github.com/ainame.png' width='140px;'>
|
134
|
+
<td id='matthew-ellis'>
|
135
|
+
<a href='https://github.com/matthewellis'>
|
136
|
+
<img src='https://github.com/matthewellis.png' width='140px;'>
|
149
137
|
</a>
|
150
|
-
<h4 align='center'><a href='https://twitter.com/
|
138
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
151
139
|
</td>
|
152
140
|
<td id='aaron-brager'>
|
153
141
|
<a href='https://github.com/getaaron'>
|
@@ -155,25 +143,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
155
143
|
</a>
|
156
144
|
<h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
|
157
145
|
</td>
|
158
|
-
<td id='
|
159
|
-
<a href='https://github.com/
|
160
|
-
<img src='https://github.com/
|
146
|
+
<td id='danielle-tomlinson'>
|
147
|
+
<a href='https://github.com/endocrimes'>
|
148
|
+
<img src='https://github.com/endocrimes.png' width='140px;'>
|
161
149
|
</a>
|
162
|
-
<h4 align='center'><a href='https://twitter.com/
|
150
|
+
<h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
|
163
151
|
</td>
|
164
|
-
|
165
|
-
<
|
166
|
-
<
|
167
|
-
<a href='https://github.com/mgrebenets'>
|
168
|
-
<img src='https://github.com/mgrebenets.png' width='140px;'>
|
152
|
+
<td id='andrew-mcburney'>
|
153
|
+
<a href='https://github.com/armcburney'>
|
154
|
+
<img src='https://github.com/armcburney.png' width='140px;'>
|
169
155
|
</a>
|
170
|
-
<h4 align='center'><a href='https://twitter.com/
|
156
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
171
157
|
</td>
|
172
|
-
<td id='
|
173
|
-
<a href='https://github.com/
|
174
|
-
<img src='https://github.com/
|
158
|
+
<td id='jorge-revuelta-h'>
|
159
|
+
<a href='https://github.com/minuscorp'>
|
160
|
+
<img src='https://github.com/minuscorp.png' width='140px;'>
|
175
161
|
</a>
|
176
|
-
<h4 align='center'><a href='https://twitter.com/
|
162
|
+
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
163
|
+
</td>
|
164
|
+
</tr>
|
165
|
+
<tr>
|
166
|
+
<td id='daniel-jankowski'>
|
167
|
+
<a href='https://github.com/mollyIV'>
|
168
|
+
<img src='https://github.com/mollyIV.png' width='140px;'>
|
169
|
+
</a>
|
170
|
+
<h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
|
177
171
|
</td>
|
178
172
|
<td id='helmut-januschka'>
|
179
173
|
<a href='https://github.com/hjanuschka'>
|
@@ -181,25 +175,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
181
175
|
</a>
|
182
176
|
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
183
177
|
</td>
|
184
|
-
<td id='
|
185
|
-
<a href='https://github.com/
|
186
|
-
<img src='https://github.com/
|
178
|
+
<td id='satoshi-namai'>
|
179
|
+
<a href='https://github.com/ainame'>
|
180
|
+
<img src='https://github.com/ainame.png' width='140px;'>
|
187
181
|
</a>
|
188
|
-
<h4 align='center'><a href='https://twitter.com/
|
182
|
+
<h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
|
189
183
|
</td>
|
190
|
-
<td id='
|
191
|
-
<a href='https://github.com/
|
192
|
-
<img src='https://github.com/
|
184
|
+
<td id='manish-rathi'>
|
185
|
+
<a href='https://github.com/crazymanish'>
|
186
|
+
<img src='https://github.com/crazymanish.png' width='140px;'>
|
193
187
|
</a>
|
194
|
-
<h4 align='center'><a href='https://twitter.com/
|
188
|
+
<h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
|
189
|
+
</td>
|
190
|
+
<td id='jérôme-lacoste'>
|
191
|
+
<a href='https://github.com/lacostej'>
|
192
|
+
<img src='https://github.com/lacostej.png' width='140px;'>
|
193
|
+
</a>
|
194
|
+
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
195
195
|
</td>
|
196
196
|
</tr>
|
197
197
|
<tr>
|
198
|
-
<td id='
|
199
|
-
<a href='https://github.com/
|
200
|
-
<img src='https://github.com/
|
198
|
+
<td id='jimmy-dee'>
|
199
|
+
<a href='https://github.com/jdee'>
|
200
|
+
<img src='https://github.com/jdee.png' width='140px;'>
|
201
201
|
</a>
|
202
|
-
<h4 align='center'
|
202
|
+
<h4 align='center'>Jimmy Dee</h4>
|
203
203
|
</td>
|
204
204
|
</table>
|
205
205
|
|
@@ -99,7 +99,7 @@ module Deliver
|
|
99
99
|
optional: true,
|
100
100
|
default_value: "ios",
|
101
101
|
verify_block: proc do |value|
|
102
|
-
UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
|
102
|
+
UI.user_error!("The platform can only be ios, appletvos, xros or osx") unless %('ios', 'appletvos', 'xros', 'osx').include?(value)
|
103
103
|
end),
|
104
104
|
|
105
105
|
# live version
|
@@ -172,7 +172,7 @@ module Deliver
|
|
172
172
|
transporter = transporter_for_selected_team
|
173
173
|
|
174
174
|
case platform
|
175
|
-
when "ios", "appletvos"
|
175
|
+
when "ios", "appletvos", "xros"
|
176
176
|
package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
|
177
177
|
app_id: Deliver.cache[:app].id,
|
178
178
|
ipa_path: ipa_path,
|
@@ -209,7 +209,7 @@ module Deliver
|
|
209
209
|
transporter = transporter_for_selected_team
|
210
210
|
|
211
211
|
case platform
|
212
|
-
when "ios", "appletvos"
|
212
|
+
when "ios", "appletvos", "xros"
|
213
213
|
package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
|
214
214
|
app_id: Deliver.cache[:app].id,
|
215
215
|
ipa_path: ipa_path,
|
@@ -264,6 +264,7 @@ module Deliver
|
|
264
264
|
private
|
265
265
|
|
266
266
|
# If App Store Connect API token, use token.
|
267
|
+
# If api_key is specified and it is an Individual API Key, don't use token but use username.
|
267
268
|
# If itc_provider was explicitly specified, use it.
|
268
269
|
# If there are multiple teams, infer the provider from the selected team name.
|
269
270
|
# If there are fewer than two teams, don't infer the provider.
|
@@ -280,6 +281,14 @@ module Deliver
|
|
280
281
|
api_key
|
281
282
|
end
|
282
283
|
|
284
|
+
# Currently no kind of transporters accept an Individual API Key. Use username and app-specific password instead.
|
285
|
+
# See https://github.com/fastlane/fastlane/issues/22115
|
286
|
+
is_individual_key = !api_key.nil? && api_key[:issuer_id].nil?
|
287
|
+
if is_individual_key
|
288
|
+
api_key = nil
|
289
|
+
api_token = nil
|
290
|
+
end
|
291
|
+
|
283
292
|
unless api_token.nil?
|
284
293
|
api_token.refresh! if api_token.expired?
|
285
294
|
return FastlaneCore::ItunesTransporter.new(nil, nil, false, nil, api_token.text, altool_compatible_command: true, api_key: api_key)
|
@@ -186,7 +186,7 @@ module Fastlane
|
|
186
186
|
optional: true,
|
187
187
|
default_value: "ios",
|
188
188
|
verify_block: proc do |value|
|
189
|
-
UI.user_error!("The platform can only be ios, appletvos, or osx") unless %('ios', 'appletvos', 'osx').include?(value)
|
189
|
+
UI.user_error!("The platform can only be ios, appletvos, xros or osx") unless %('ios', 'appletvos', 'xros', 'osx').include?(value)
|
190
190
|
end),
|
191
191
|
FastlaneCore::ConfigItem.new(key: :team_name,
|
192
192
|
short_option: "-e",
|
@@ -37,9 +37,9 @@ module Fastlane
|
|
37
37
|
|
38
38
|
Dir.chdir(params[:path]) do
|
39
39
|
if params[:commits_count]
|
40
|
-
changelog = Actions.git_log_last_commits(params[:pretty], params[:commits_count], merge_commit_filtering, params[:date_format], params[:ancestry_path])
|
40
|
+
changelog = Actions.git_log_last_commits(params[:pretty], params[:commits_count], merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
41
41
|
else
|
42
|
-
changelog = Actions.git_log_between(params[:pretty], from, to, merge_commit_filtering, params[:date_format], params[:ancestry_path])
|
42
|
+
changelog = Actions.git_log_between(params[:pretty], from, to, merge_commit_filtering, params[:date_format], params[:ancestry_path], params[:app_path])
|
43
43
|
end
|
44
44
|
|
45
45
|
changelog = changelog.gsub("\n\n", "\n") if changelog # as there are duplicate newlines
|
@@ -147,7 +147,11 @@ module Fastlane
|
|
147
147
|
verify_block: proc do |value|
|
148
148
|
matches_option = GIT_MERGE_COMMIT_FILTERING_OPTIONS.any? { |opt| opt.to_s == value }
|
149
149
|
UI.user_error!("Valid values for :merge_commit_filtering are #{GIT_MERGE_COMMIT_FILTERING_OPTIONS.map { |o| "'#{o}'" }.join(', ')}") unless matches_option
|
150
|
-
end)
|
150
|
+
end),
|
151
|
+
FastlaneCore::ConfigItem.new(key: :app_path,
|
152
|
+
env_name: 'FL_CHANGELOG_FROM_GIT_COMMITS_APP_PATH',
|
153
|
+
description: "Scopes the changelog to a specific subdirectory of the repository",
|
154
|
+
optional: true)
|
151
155
|
]
|
152
156
|
end
|
153
157
|
|
@@ -290,7 +290,7 @@ module Fastlane
|
|
290
290
|
FastlaneCore::ConfigItem.new(key: :platform,
|
291
291
|
short_option: "-p",
|
292
292
|
env_name: "DOWNLOAD_DSYMS_PLATFORM",
|
293
|
-
description: "The app platform for dSYMs you wish to download (ios, appletvos)",
|
293
|
+
description: "The app platform for dSYMs you wish to download (ios, xros, appletvos)",
|
294
294
|
default_value: :ios),
|
295
295
|
FastlaneCore::ConfigItem.new(key: :version,
|
296
296
|
short_option: "-v",
|
@@ -351,7 +351,7 @@ module Fastlane
|
|
351
351
|
end
|
352
352
|
|
353
353
|
def self.is_supported?(platform)
|
354
|
-
[:ios, :appletvos].include?(platform)
|
354
|
+
[:ios, :appletvos, :xros].include?(platform)
|
355
355
|
end
|
356
356
|
|
357
357
|
def self.example_code
|
@@ -23,7 +23,9 @@ module Fastlane
|
|
23
23
|
# Manual post processing trying to ignore certain file paths
|
24
24
|
if (ignore_files = params[:ignore_files])
|
25
25
|
repo_status = repo_status.lines.reject do |line|
|
26
|
-
path = line
|
26
|
+
path = path_from_git_status_line(line)
|
27
|
+
next if path.empty?
|
28
|
+
|
27
29
|
was_found = ignore_files.include?(path)
|
28
30
|
|
29
31
|
UI.message("Ignoring '#{path}'") if was_found
|
@@ -54,6 +56,19 @@ module Fastlane
|
|
54
56
|
end
|
55
57
|
end
|
56
58
|
|
59
|
+
def self.path_from_git_status_line(line)
|
60
|
+
# Extract the file path from the line based on https://git-scm.com/docs/git-status#_output.
|
61
|
+
# The first two characters indicate the status of the file path (e.g. ' M')
|
62
|
+
# M App/script.sh
|
63
|
+
#
|
64
|
+
# If the file path is renamed, the original path is also included in the line (e.g. 'R ORIG_PATH -> PATH')
|
65
|
+
# R App/script.sh -> App/script_renamed.sh
|
66
|
+
#
|
67
|
+
path = line.match(/^.. (.* -> )?(.*)$/)[2]
|
68
|
+
path = path.delete_prefix('"').delete_suffix('"')
|
69
|
+
return path
|
70
|
+
end
|
71
|
+
|
57
72
|
def self.description
|
58
73
|
"Raises an exception if there are uncommitted git changes"
|
59
74
|
end
|
@@ -83,7 +83,7 @@ module Fastlane
|
|
83
83
|
optional: true,
|
84
84
|
default_value: "ios",
|
85
85
|
verify_block: proc do |value|
|
86
|
-
UI.user_error!("The platform can only be ios, osx, or appletvos") unless %('osx', ios', 'appletvos').include?(value)
|
86
|
+
UI.user_error!("The platform can only be ios, osx, xros or appletvos") unless %('osx', ios', 'appletvos', 'xros').include?(value)
|
87
87
|
end),
|
88
88
|
FastlaneCore::ConfigItem.new(key: :initial_build_number,
|
89
89
|
env_name: "INITIAL_BUILD_NUMBER",
|
@@ -169,10 +169,10 @@ module Fastlane
|
|
169
169
|
end),
|
170
170
|
FastlaneCore::ConfigItem.new(key: :platform,
|
171
171
|
env_name: "FL_SET_CHANGELOG_PLATFORM",
|
172
|
-
description: "The platform of the app (ios, appletvos, mac)",
|
172
|
+
description: "The platform of the app (ios, appletvos, xros, mac)",
|
173
173
|
default_value: "ios",
|
174
174
|
verify_block: proc do |value|
|
175
|
-
available = ['ios', 'appletvos', 'mac']
|
175
|
+
available = ['ios', 'appletvos', 'xros', 'mac']
|
176
176
|
UI.user_error!("Invalid platform '#{value}', must be #{available.join(', ')}") unless available.include?(value)
|
177
177
|
end)
|
178
178
|
]
|
@@ -183,7 +183,7 @@ module Fastlane
|
|
183
183
|
end
|
184
184
|
|
185
185
|
def self.is_supported?(platform)
|
186
|
-
[:ios, :appletvos, :mac].include?(platform)
|
186
|
+
[:ios, :appletvos, :xros, :mac].include?(platform)
|
187
187
|
end
|
188
188
|
|
189
189
|
def self.example_code
|
@@ -27,6 +27,7 @@ module Fastlane
|
|
27
27
|
slack_attachment = self.class.generate_slack_attachments(options)
|
28
28
|
link_names = options[:link_names]
|
29
29
|
icon_url = options[:use_webhook_configured_username_and_icon] ? nil : options[:icon_url]
|
30
|
+
icon_emoji = options[:use_webhook_configured_username_and_icon] ? nil : options[:icon_emoji]
|
30
31
|
|
31
32
|
post_message(
|
32
33
|
channel: channel,
|
@@ -34,16 +35,18 @@ module Fastlane
|
|
34
35
|
attachments: [slack_attachment],
|
35
36
|
link_names: link_names,
|
36
37
|
icon_url: icon_url,
|
38
|
+
icon_emoji: icon_emoji,
|
37
39
|
fail_on_error: options[:fail_on_error]
|
38
40
|
)
|
39
41
|
end
|
40
42
|
|
41
|
-
def post_message(channel:, username:, attachments:, link_names:, icon_url:, fail_on_error:)
|
43
|
+
def post_message(channel:, username:, attachments:, link_names:, icon_url:, icon_emoji:, fail_on_error:)
|
42
44
|
@notifier.post_to_legacy_incoming_webhook(
|
43
45
|
channel: channel,
|
44
46
|
username: username,
|
45
47
|
link_names: link_names,
|
46
48
|
icon_url: icon_url,
|
49
|
+
icon_emoji: icon_emoji,
|
47
50
|
attachments: attachments
|
48
51
|
)
|
49
52
|
UI.success('Successfully sent Slack notification')
|
@@ -211,9 +214,13 @@ module Fastlane
|
|
211
214
|
optional: true),
|
212
215
|
FastlaneCore::ConfigItem.new(key: :icon_url,
|
213
216
|
env_name: "FL_SLACK_ICON_URL",
|
214
|
-
description: "Overrides the webhook's image property if use_webhook_configured_username_and_icon is false",
|
217
|
+
description: "Specifies a URL of an image to use as the photo of the message. Overrides the webhook's image property if use_webhook_configured_username_and_icon is false",
|
215
218
|
default_value: "https://fastlane.tools/assets/img/fastlane_icon.png",
|
216
219
|
optional: true),
|
220
|
+
FastlaneCore::ConfigItem.new(key: :icon_emoji,
|
221
|
+
env_name: "FL_SLACK_ICON_EMOJI",
|
222
|
+
description: "Specifies an emoji (using colon shortcodes, eg. :white_check_mark:) to use as the photo of the message. Overrides the webhook's image property if use_webhook_configured_username_and_icon is false. This parameter takes precedence over icon_url",
|
223
|
+
optional: true),
|
217
224
|
FastlaneCore::ConfigItem.new(key: :payload,
|
218
225
|
env_name: "FL_SLACK_PAYLOAD",
|
219
226
|
description: "Add additional information to this post. payload must be a hash containing any key with any value",
|
@@ -96,6 +96,8 @@ module Fastlane
|
|
96
96
|
[key, options_to_client.call(value).join(',')]
|
97
97
|
when :custom
|
98
98
|
[key, value]
|
99
|
+
when :tags
|
100
|
+
[key, value.join(',')]
|
99
101
|
else
|
100
102
|
UI.user_error!("Unknown parameter: #{key}")
|
101
103
|
end
|
@@ -241,7 +243,13 @@ module Fastlane
|
|
241
243
|
env_name: "FL_TESTFAIRY_TIMEOUT",
|
242
244
|
description: "Request timeout in seconds",
|
243
245
|
type: Integer,
|
244
|
-
optional: true)
|
246
|
+
optional: true),
|
247
|
+
FastlaneCore::ConfigItem.new(key: :tags,
|
248
|
+
optional: true,
|
249
|
+
env_name: "FL_TESTFAIRY_TAGS",
|
250
|
+
description: "Custom tags that can be used to organize your builds",
|
251
|
+
type: Array,
|
252
|
+
default_value: [])
|
245
253
|
]
|
246
254
|
end
|
247
255
|
|
@@ -218,7 +218,9 @@ module Fastlane
|
|
218
218
|
end
|
219
219
|
|
220
220
|
def self.sh(*command, step_name: nil, log: true, error_callback: nil, &b)
|
221
|
-
command_header =
|
221
|
+
command_header = step_name
|
222
|
+
command_header ||= log ? Actions.shell_command_from_args(*command) : "shell command"
|
223
|
+
|
222
224
|
Actions.execute_action(command_header) do
|
223
225
|
Actions.sh_no_action(*command, log: log, error_callback: error_callback, &b)
|
224
226
|
end
|
@@ -343,7 +345,11 @@ module Fastlane
|
|
343
345
|
# Update the repo if it's eligible for caching but the version isn't specified
|
344
346
|
UI.message("Fetching remote git branches and updating git repo...")
|
345
347
|
Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
|
346
|
-
|
348
|
+
command = "cd #{clone_folder.shellescape} && git fetch --all --quiet && git checkout #{checkout_param.shellescape} #{checkout_path} && git reset --hard"
|
349
|
+
# Check if checked out "branch" is actually a branch or a tag
|
350
|
+
current_branch = Actions.sh("cd #{clone_folder.shellescape} && git rev-parse --abbrev-ref HEAD")
|
351
|
+
command << " && git rebase" unless current_branch.strip.eql?("HEAD")
|
352
|
+
Actions.sh(command)
|
347
353
|
end
|
348
354
|
else
|
349
355
|
begin
|
@@ -9,13 +9,14 @@ module Fastlane
|
|
9
9
|
end.freeze
|
10
10
|
end
|
11
11
|
|
12
|
-
def self.git_log_between(pretty_format, from, to, merge_commit_filtering, date_format = nil, ancestry_path)
|
12
|
+
def self.git_log_between(pretty_format, from, to, merge_commit_filtering, date_format = nil, ancestry_path, app_path)
|
13
13
|
command = %w(git log)
|
14
14
|
command << "--pretty=#{pretty_format}"
|
15
15
|
command << "--date=#{date_format}" if date_format
|
16
16
|
command << '--ancestry-path' if ancestry_path
|
17
17
|
command << "#{from}...#{to}"
|
18
18
|
command << git_log_merge_commit_filtering_option(merge_commit_filtering)
|
19
|
+
command << app_path if app_path
|
19
20
|
# "*command" syntax expands "command" array into variable arguments, which
|
20
21
|
# will then be individually shell-escaped by Actions.sh.
|
21
22
|
Actions.sh(*command.compact, log: false).chomp
|
@@ -23,13 +24,14 @@ module Fastlane
|
|
23
24
|
nil
|
24
25
|
end
|
25
26
|
|
26
|
-
def self.git_log_last_commits(pretty_format, commit_count, merge_commit_filtering, date_format = nil, ancestry_path)
|
27
|
+
def self.git_log_last_commits(pretty_format, commit_count, merge_commit_filtering, date_format = nil, ancestry_path, app_path)
|
27
28
|
command = %w(git log)
|
28
29
|
command << "--pretty=#{pretty_format}"
|
29
30
|
command << "--date=#{date_format}" if date_format
|
30
31
|
command << '--ancestry-path' if ancestry_path
|
31
32
|
command << '-n' << commit_count.to_s
|
32
33
|
command << git_log_merge_commit_filtering_option(merge_commit_filtering)
|
34
|
+
command << app_path if app_path
|
33
35
|
Actions.sh(*command.compact, log: false).chomp
|
34
36
|
rescue
|
35
37
|
nil
|
@@ -8,16 +8,17 @@ module Fastlane
|
|
8
8
|
end
|
9
9
|
end
|
10
10
|
|
11
|
-
# Overriding channel, icon_url and username is only supported in legacy incoming webhook.
|
11
|
+
# Overriding channel, icon_url, icon_emoji and username is only supported in legacy incoming webhook.
|
12
12
|
# Also note that the use of attachments has been discouraged by Slack, in favor of Block Kit.
|
13
13
|
# https://api.slack.com/legacy/custom-integrations/messaging/webhooks
|
14
|
-
def post_to_legacy_incoming_webhook(channel:, username:, attachments:, link_names:, icon_url:)
|
14
|
+
def post_to_legacy_incoming_webhook(channel:, username:, attachments:, link_names:, icon_url:, icon_emoji:)
|
15
15
|
@client.post(@webhook_url) do |request|
|
16
16
|
request.headers['Content-Type'] = 'application/json'
|
17
17
|
request.body = {
|
18
18
|
channel: channel,
|
19
19
|
username: username,
|
20
20
|
icon_url: icon_url,
|
21
|
+
icon_emoji: icon_emoji,
|
21
22
|
attachments: attachments,
|
22
23
|
link_names: link_names
|
23
24
|
}.to_json
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.
|
2
|
+
VERSION = '2.223.0'.freeze
|
3
3
|
SUMMARY = "The easiest way to build and release mobile apps.".freeze
|
4
4
|
DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
|
5
5
|
MINIMUM_XCODE_RELEASE = "7.0".freeze
|