fastlane 2.222.0 → 2.223.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +98 -98
  3. data/deliver/lib/deliver/runner.rb +9 -0
  4. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +7 -3
  5. data/fastlane/lib/fastlane/actions/slack.rb +9 -2
  6. data/fastlane/lib/fastlane/actions/testfairy.rb +9 -1
  7. data/fastlane/lib/fastlane/fast_file.rb +5 -1
  8. data/fastlane/lib/fastlane/helper/git_helper.rb +4 -2
  9. data/fastlane/lib/fastlane/notification/slack.rb +3 -2
  10. data/fastlane/lib/fastlane/version.rb +1 -1
  11. data/fastlane/swift/Deliverfile.swift +1 -1
  12. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  13. data/fastlane/swift/Fastlane.swift +78 -18
  14. data/fastlane/swift/Gymfile.swift +1 -1
  15. data/fastlane/swift/GymfileProtocol.swift +5 -1
  16. data/fastlane/swift/Matchfile.swift +1 -1
  17. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  18. data/fastlane/swift/Precheckfile.swift +1 -1
  19. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  20. data/fastlane/swift/Scanfile.swift +1 -1
  21. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  22. data/fastlane/swift/Screengrabfile.swift +1 -1
  23. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  24. data/fastlane/swift/Snapshotfile.swift +1 -1
  25. data/fastlane/swift/SnapshotfileProtocol.swift +5 -1
  26. data/fastlane/swift/formatting/Brewfile.lock.json +23 -18
  27. data/fastlane/swift/formatting/Rakefile +1 -0
  28. data/fastlane_core/lib/fastlane_core/build_watcher.rb +5 -0
  29. data/fastlane_core/lib/fastlane_core/project.rb +1 -0
  30. data/gym/lib/gym/options.rb +10 -1
  31. data/match/lib/match/change_password.rb +2 -1
  32. data/match/lib/match/encryption/encryption.rb +2 -2
  33. data/match/lib/match/encryption/openssl.rb +10 -5
  34. data/match/lib/match/importer.rb +2 -1
  35. data/match/lib/match/nuke.rb +2 -1
  36. data/match/lib/match/options.rb +5 -0
  37. data/match/lib/match/runner.rb +2 -1
  38. data/pilot/lib/pilot/build_manager.rb +9 -0
  39. data/scan/lib/scan/module.rb +1 -1
  40. data/scan/lib/scan/options.rb +10 -1
  41. data/snapshot/lib/snapshot/options.rb +9 -0
  42. metadata +20 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3c2fcb0e5c62891ef4b01994e10d1c7880f0738f5f289d28633e983e657eede5
4
- data.tar.gz: 5e56397ff26ad27aee638525ed836aea56749477029a81fd263ac747da7fb760
3
+ metadata.gz: 14274b2abc21a737dad175e4f6a78ebd86979cb84c94e1971b5002d348736bc0
4
+ data.tar.gz: f5ce93eeaa569f021b7c3d6ca80e83e202b071a6faf088ed17fa4ebf05bb4a6b
5
5
  SHA512:
6
- metadata.gz: 38e276729f76d983d1e61807d6502cd8d09b9b357be64b04f2045870db69803923e928566fd2df06e9727d5d69e58063837c70c32a5f9d2c6ef9693d6aa195b0
7
- data.tar.gz: 23b475e6e9dede5602fceebd40be36fc3026a74e9b29d90f5942e4a084761bd6820f03d77733f8700a21957384ed52d560d089126a067c74475678eea42426e4
6
+ metadata.gz: d796b0ee770f953882fe861c1602583fdba65c281db608b5d2b3d9d87f88ee0d93e0d8ae3f9085eb1c333c6f95a6bdcda43a862cfca769adab01b286c7a443f1
7
+ data.tar.gz: b46b75471e5d902d2a20143ca8e3be564a1cbb793a0951f6c2c6f4e22e1bd66af7f69d5003338f510d55afaf5617443e018ca4678e4b7cce75ca8eb4c1691180
data/README.md CHANGED
@@ -35,17 +35,17 @@ 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='manish-rathi'>
39
- <a href='https://github.com/crazymanish'>
40
- <img src='https://github.com/crazymanish.png' width='140px;'>
38
+ <td id='danielle-tomlinson'>
39
+ <a href='https://github.com/endocrimes'>
40
+ <img src='https://github.com/endocrimes.png' width='140px;'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
43
43
  </td>
44
- <td id='iulian-onofrei'>
45
- <a href='https://github.com/revolter'>
46
- <img src='https://github.com/revolter.png' width='140px;'>
44
+ <td id='jan-piotrowski'>
45
+ <a href='https://github.com/janpio'>
46
+ <img src='https://github.com/janpio.png' width='140px;'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
49
49
  </td>
50
50
  <td id='helmut-januschka'>
51
51
  <a href='https://github.com/hjanuschka'>
@@ -53,37 +53,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
53
53
  </a>
54
54
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
55
55
  </td>
56
- <td id='stefan-natchev'>
57
- <a href='https://github.com/snatchev'>
58
- <img src='https://github.com/snatchev.png' width='140px;'>
56
+ <td id='aaron-brager'>
57
+ <a href='https://github.com/getaaron'>
58
+ <img src='https://github.com/getaaron.png' width='140px;'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
61
61
  </td>
62
- <td id='manu-wallner'>
63
- <a href='https://github.com/milch'>
64
- <img src='https://github.com/milch.png' width='140px;'>
62
+ <td id='iulian-onofrei'>
63
+ <a href='https://github.com/revolter'>
64
+ <img src='https://github.com/revolter.png' width='140px;'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='maksym-grebenets'>
71
- <a href='https://github.com/mgrebenets'>
72
- <img src='https://github.com/mgrebenets.png' width='140px;'>
73
- </a>
74
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
75
- </td>
76
- <td id='jorge-revuelta-h'>
77
- <a href='https://github.com/minuscorp'>
78
- <img src='https://github.com/minuscorp.png' width='140px;'>
70
+ <td id='matthew-ellis'>
71
+ <a href='https://github.com/matthewellis'>
72
+ <img src='https://github.com/matthewellis.png' width='140px;'>
79
73
  </a>
80
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
81
75
  </td>
82
- <td id='jérôme-lacoste'>
83
- <a href='https://github.com/lacostej'>
84
- <img src='https://github.com/lacostej.png' width='140px;'>
76
+ <td id='max-ott'>
77
+ <a href='https://github.com/max-ott'>
78
+ <img src='https://github.com/max-ott.png' width='140px;'>
85
79
  </a>
86
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
87
81
  </td>
88
82
  <td id='roger-oba'>
89
83
  <a href='https://github.com/rogerluan'>
@@ -91,115 +85,121 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
91
85
  </a>
92
86
  <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
93
87
  </td>
94
- <td id='jan-piotrowski'>
95
- <a href='https://github.com/janpio'>
96
- <img src='https://github.com/janpio.png' width='140px;'>
88
+ <td id='olivier-halligon'>
89
+ <a href='https://github.com/AliSoftware'>
90
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
97
91
  </a>
98
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
93
+ </td>
94
+ <td id='manish-rathi'>
95
+ <a href='https://github.com/crazymanish'>
96
+ <img src='https://github.com/crazymanish.png' width='140px;'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
99
99
  </td>
100
100
  </tr>
101
101
  <tr>
102
- <td id='max-ott'>
103
- <a href='https://github.com/max-ott'>
104
- <img src='https://github.com/max-ott.png' width='140px;'>
102
+ <td id='felix-krause'>
103
+ <a href='https://github.com/KrauseFx'>
104
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
105
105
  </a>
106
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
107
107
  </td>
108
- <td id='matthew-ellis'>
109
- <a href='https://github.com/matthewellis'>
110
- <img src='https://github.com/matthewellis.png' width='140px;'>
108
+ <td id='josh-holtz'>
109
+ <a href='https://github.com/joshdholtz'>
110
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
111
111
  </a>
112
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
113
113
  </td>
114
- <td id='danielle-tomlinson'>
115
- <a href='https://github.com/endocrimes'>
116
- <img src='https://github.com/endocrimes.png' width='140px;'>
114
+ <td id='łukasz-grabowski'>
115
+ <a href='https://github.com/lucgrabowski'>
116
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
117
117
  </a>
118
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
118
+ <h4 align='center'>Łukasz Grabowski</h4>
119
119
  </td>
120
- <td id='daniel-jankowski'>
121
- <a href='https://github.com/mollyIV'>
122
- <img src='https://github.com/mollyIV.png' width='140px;'>
120
+ <td id='fumiya-nakamura'>
121
+ <a href='https://github.com/nafu'>
122
+ <img src='https://github.com/nafu.png' width='140px;'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
125
125
  </td>
126
- <td id='kohki-miki'>
127
- <a href='https://github.com/giginet'>
128
- <img src='https://github.com/giginet.png' width='140px;'>
126
+ <td id='maksym-grebenets'>
127
+ <a href='https://github.com/mgrebenets'>
128
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='jimmy-dee'>
135
- <a href='https://github.com/jdee'>
136
- <img src='https://github.com/jdee.png' width='140px;'>
137
- </a>
138
- <h4 align='center'>Jimmy Dee</h4>
139
- </td>
140
- <td id='satoshi-namai'>
141
- <a href='https://github.com/ainame'>
142
- <img src='https://github.com/ainame.png' width='140px;'>
143
- </a>
144
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
145
- </td>
146
134
  <td id='luka-mirosevic'>
147
135
  <a href='https://github.com/lmirosevic'>
148
136
  <img src='https://github.com/lmirosevic.png' width='140px;'>
149
137
  </a>
150
138
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
151
139
  </td>
152
- <td id='joshua-liebowitz'>
153
- <a href='https://github.com/taquitos'>
154
- <img src='https://github.com/taquitos.png' width='140px;'>
140
+ <td id='jérôme-lacoste'>
141
+ <a href='https://github.com/lacostej'>
142
+ <img src='https://github.com/lacostej.png' width='140px;'>
155
143
  </a>
156
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
157
145
  </td>
158
- <td id='josh-holtz'>
159
- <a href='https://github.com/joshdholtz'>
160
- <img src='https://github.com/joshdholtz.png' width='140px;'>
146
+ <td id='andrew-mcburney'>
147
+ <a href='https://github.com/armcburney'>
148
+ <img src='https://github.com/armcburney.png' width='140px;'>
161
149
  </a>
162
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
151
+ </td>
152
+ <td id='stefan-natchev'>
153
+ <a href='https://github.com/snatchev'>
154
+ <img src='https://github.com/snatchev.png' width='140px;'>
155
+ </a>
156
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
157
+ </td>
158
+ <td id='manu-wallner'>
159
+ <a href='https://github.com/milch'>
160
+ <img src='https://github.com/milch.png' width='140px;'>
161
+ </a>
162
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
163
163
  </td>
164
164
  </tr>
165
165
  <tr>
166
- <td id='fumiya-nakamura'>
167
- <a href='https://github.com/nafu'>
168
- <img src='https://github.com/nafu.png' width='140px;'>
166
+ <td id='daniel-jankowski'>
167
+ <a href='https://github.com/mollyIV'>
168
+ <img src='https://github.com/mollyIV.png' width='140px;'>
169
169
  </a>
170
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
171
171
  </td>
172
- <td id='łukasz-grabowski'>
173
- <a href='https://github.com/lucgrabowski'>
174
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
172
+ <td id='jorge-revuelta-h'>
173
+ <a href='https://github.com/minuscorp'>
174
+ <img src='https://github.com/minuscorp.png' width='140px;'>
175
175
  </a>
176
- <h4 align='center'>Łukasz Grabowski</h4>
176
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
177
177
  </td>
178
- <td id='felix-krause'>
179
- <a href='https://github.com/KrauseFx'>
180
- <img src='https://github.com/KrauseFx.png' width='140px;'>
178
+ <td id='joshua-liebowitz'>
179
+ <a href='https://github.com/taquitos'>
180
+ <img src='https://github.com/taquitos.png' width='140px;'>
181
181
  </a>
182
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
182
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
183
183
  </td>
184
- <td id='aaron-brager'>
185
- <a href='https://github.com/getaaron'>
186
- <img src='https://github.com/getaaron.png' width='140px;'>
184
+ <td id='jimmy-dee'>
185
+ <a href='https://github.com/jdee'>
186
+ <img src='https://github.com/jdee.png' width='140px;'>
187
187
  </a>
188
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
188
+ <h4 align='center'>Jimmy Dee</h4>
189
189
  </td>
190
- <td id='olivier-halligon'>
191
- <a href='https://github.com/AliSoftware'>
192
- <img src='https://github.com/AliSoftware.png' width='140px;'>
190
+ <td id='satoshi-namai'>
191
+ <a href='https://github.com/ainame'>
192
+ <img src='https://github.com/ainame.png' width='140px;'>
193
193
  </a>
194
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
194
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
195
195
  </td>
196
196
  </tr>
197
197
  <tr>
198
- <td id='andrew-mcburney'>
199
- <a href='https://github.com/armcburney'>
200
- <img src='https://github.com/armcburney.png' width='140px;'>
198
+ <td id='kohki-miki'>
199
+ <a href='https://github.com/giginet'>
200
+ <img src='https://github.com/giginet.png' width='140px;'>
201
201
  </a>
202
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
202
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
203
203
  </td>
204
204
  </table>
205
205
 
@@ -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)
@@ -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
 
@@ -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
 
@@ -345,7 +345,11 @@ module Fastlane
345
345
  # Update the repo if it's eligible for caching but the version isn't specified
346
346
  UI.message("Fetching remote git branches and updating git repo...")
347
347
  Helper.with_env_values('GIT_TERMINAL_PROMPT' => '0') do
348
- Actions.sh("cd #{clone_folder.shellescape} && git fetch --all --quiet && git checkout #{checkout_param.shellescape} #{checkout_path} && git reset --hard && git rebase")
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)
349
353
  end
350
354
  else
351
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.222.0'.freeze
2
+ VERSION = '2.223.1'.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
@@ -17,4 +17,4 @@ public class Deliverfile: DeliverfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.222.0
20
+ // Generated with fastlane 2.223.1
@@ -272,4 +272,4 @@ public extension DeliverfileProtocol {
272
272
 
273
273
  // Please don't remove the lines below
274
274
  // They are used to detect outdated files
275
- // FastlaneRunnerAPIVersion [0.9.127]
275
+ // FastlaneRunnerAPIVersion [0.9.129]