fastlane 2.222.0 → 2.223.1

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.
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]