fastlane 2.227.2 → 2.229.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.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +94 -94
  3. data/fastlane/lib/fastlane/actions/docs/sync_code_signing.md +8 -6
  4. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +28 -17
  5. data/fastlane/lib/fastlane/helper/s3_client_helper.rb +4 -0
  6. data/fastlane/lib/fastlane/version.rb +1 -1
  7. data/fastlane/swift/Deliverfile.swift +1 -1
  8. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  9. data/fastlane/swift/Fastlane.swift +7 -66
  10. data/fastlane/swift/Gymfile.swift +1 -1
  11. data/fastlane/swift/GymfileProtocol.swift +1 -1
  12. data/fastlane/swift/Matchfile.swift +1 -1
  13. data/fastlane/swift/MatchfileProtocol.swift +2 -2
  14. data/fastlane/swift/Precheckfile.swift +1 -1
  15. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  16. data/fastlane/swift/Runner.swift +1 -1
  17. data/fastlane/swift/Scanfile.swift +1 -1
  18. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  19. data/fastlane/swift/Screengrabfile.swift +1 -1
  20. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  21. data/fastlane/swift/Snapshotfile.swift +1 -1
  22. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  23. data/fastlane/swift/SocketClient.swift +5 -5
  24. data/fastlane/swift/formatting/Rakefile +1 -2
  25. data/match/lib/match/options.rb +1 -0
  26. data/match/lib/match/storage/s3_storage.rb +4 -7
  27. data/sigh/lib/sigh/options.rb +1 -0
  28. data/sigh/lib/sigh/runner.rb +5 -2
  29. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +4 -2
  30. data/spaceship/lib/spaceship/connect_api/models/profile.rb +2 -3
  31. metadata +61 -20
  32. data/fastlane/lib/fastlane/actions/hipchat.rb +0 -200
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: cd14fd455663793f0e298e12c9c71376ce47cc2c659a8234fbb7154b464fda43
4
- data.tar.gz: f4fcbc50151986926db37b5af08c925dd1bbe80ba8156981ca06f68efa2f61f5
3
+ metadata.gz: 4c080937125dfd3b1a692f4387689a29182bd2a3196d4c61ee7d061a8c84ccc5
4
+ data.tar.gz: b66271284edcb5ef4f0718c0b79d95368db148dc7da7889c6557a0d3c6d2a175
5
5
  SHA512:
6
- metadata.gz: ecf0d5bacb42638c297e9aeb99289976e87763437cff51bf3f084695b19a44b51fad10cf228a152684477f9377999edd976732141a584fb3c977c9f8d9e72159
7
- data.tar.gz: bf10d3d90929b38106d9cea055e4e8b41c61709d3b35ce04179b4d6e41f8fccd358e8c3635759f073df3ec68e9442040db52d0bd09ffa52fb076d30e04a16228
6
+ metadata.gz: fdd0cb2b47b5695b846b8484ad331e7fdcfeb7fb5bb246528601de02dcb3216224330e4bf1a93e22f45a526196b66ed685e215dbd0e6d4ddca479f86bac7c410
7
+ data.tar.gz: 94e72d82de48bc7c4eaeae5458a33dac3b8b0073d65465b6944c81debd0426b316c3ecf02501f436dfcf4d7254412ae08ad542c52fdefb5a8321485a0f214276
data/README.md CHANGED
@@ -35,43 +35,29 @@ 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='maksym-grebenets'>
39
- <a href='https://github.com/mgrebenets'>
40
- <img src='https://github.com/mgrebenets.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
43
- </td>
44
- <td id='stefan-natchev'>
45
- <a href='https://github.com/snatchev'>
46
- <img src='https://github.com/snatchev.png' width='140px;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
49
- </td>
50
- <td id='andrew-mcburney'>
51
- <a href='https://github.com/armcburney'>
52
- <img src='https://github.com/armcburney.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;'>
53
41
  </a>
54
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
55
43
  </td>
56
- <td id='aaron-brager'>
57
- <a href='https://github.com/getaaron'>
58
- <img src='https://github.com/getaaron.png' width='140px;'>
44
+ <td id='łukasz-grabowski'>
45
+ <a href='https://github.com/lucgrabowski'>
46
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
59
47
  </a>
60
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
48
+ <h4 align='center'>Łukasz Grabowski</h4>
61
49
  </td>
62
- <td id='kohki-miki'>
63
- <a href='https://github.com/giginet'>
64
- <img src='https://github.com/giginet.png' width='140px;'>
50
+ <td id='felix-krause'>
51
+ <a href='https://github.com/KrauseFx'>
52
+ <img src='https://github.com/KrauseFx.png' width='140px;'>
65
53
  </a>
66
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
67
55
  </td>
68
- </tr>
69
- <tr>
70
- <td id='danielle-tomlinson'>
71
- <a href='https://github.com/endocrimes'>
72
- <img src='https://github.com/endocrimes.png' width='140px;'>
56
+ <td id='josh-holtz'>
57
+ <a href='https://github.com/joshdholtz'>
58
+ <img src='https://github.com/joshdholtz.png' width='140px;'>
73
59
  </a>
74
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
75
61
  </td>
76
62
  <td id='jimmy-dee'>
77
63
  <a href='https://github.com/jdee'>
@@ -79,11 +65,19 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
79
65
  </a>
80
66
  <h4 align='center'>Jimmy Dee</h4>
81
67
  </td>
82
- <td id='max-ott'>
83
- <a href='https://github.com/max-ott'>
84
- <img src='https://github.com/max-ott.png' width='140px;'>
68
+ </tr>
69
+ <tr>
70
+ <td id='iulian-onofrei'>
71
+ <a href='https://github.com/revolter'>
72
+ <img src='https://github.com/revolter.png' width='140px;'>
85
73
  </a>
86
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
75
+ </td>
76
+ <td id='aaron-brager'>
77
+ <a href='https://github.com/getaaron'>
78
+ <img src='https://github.com/getaaron.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
87
81
  </td>
88
82
  <td id='satoshi-namai'>
89
83
  <a href='https://github.com/ainame'>
@@ -91,37 +85,31 @@ 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/ainame'>Satoshi Namai</a></h4>
93
87
  </td>
94
- <td id='jérôme-lacoste'>
95
- <a href='https://github.com/lacostej'>
96
- <img src='https://github.com/lacostej.png' width='140px;'>
97
- </a>
98
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
99
- </td>
100
- </tr>
101
- <tr>
102
88
  <td id='luka-mirosevic'>
103
89
  <a href='https://github.com/lmirosevic'>
104
90
  <img src='https://github.com/lmirosevic.png' width='140px;'>
105
91
  </a>
106
92
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
107
93
  </td>
108
- <td id='jan-piotrowski'>
109
- <a href='https://github.com/janpio'>
110
- <img src='https://github.com/janpio.png' width='140px;'>
94
+ <td id='max-ott'>
95
+ <a href='https://github.com/max-ott'>
96
+ <img src='https://github.com/max-ott.png' width='140px;'>
111
97
  </a>
112
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
113
99
  </td>
114
- <td id='iulian-onofrei'>
115
- <a href='https://github.com/revolter'>
116
- <img src='https://github.com/revolter.png' width='140px;'>
100
+ </tr>
101
+ <tr>
102
+ <td id='joshua-liebowitz'>
103
+ <a href='https://github.com/taquitos'>
104
+ <img src='https://github.com/taquitos.png' width='140px;'>
117
105
  </a>
118
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
119
107
  </td>
120
- <td id='matthew-ellis'>
121
- <a href='https://github.com/matthewellis'>
122
- <img src='https://github.com/matthewellis.png' width='140px;'>
108
+ <td id='stefan-natchev'>
109
+ <a href='https://github.com/snatchev'>
110
+ <img src='https://github.com/snatchev.png' width='140px;'>
123
111
  </a>
124
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
112
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
125
113
  </td>
126
114
  <td id='jorge-revuelta-h'>
127
115
  <a href='https://github.com/minuscorp'>
@@ -129,69 +117,49 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
129
117
  </a>
130
118
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
131
119
  </td>
132
- </tr>
133
- <tr>
134
- <td id='olivier-halligon'>
135
- <a href='https://github.com/AliSoftware'>
136
- <img src='https://github.com/AliSoftware.png' width='140px;'>
120
+ <td id='matthew-ellis'>
121
+ <a href='https://github.com/matthewellis'>
122
+ <img src='https://github.com/matthewellis.png' width='140px;'>
137
123
  </a>
138
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
139
125
  </td>
140
- <td id='josh-holtz'>
141
- <a href='https://github.com/joshdholtz'>
142
- <img src='https://github.com/joshdholtz.png' width='140px;'>
126
+ <td id='jan-piotrowski'>
127
+ <a href='https://github.com/janpio'>
128
+ <img src='https://github.com/janpio.png' width='140px;'>
143
129
  </a>
144
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
145
131
  </td>
132
+ </tr>
133
+ <tr>
146
134
  <td id='fumiya-nakamura'>
147
135
  <a href='https://github.com/nafu'>
148
136
  <img src='https://github.com/nafu.png' width='140px;'>
149
137
  </a>
150
138
  <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
151
139
  </td>
152
- <td id='łukasz-grabowski'>
153
- <a href='https://github.com/lucgrabowski'>
154
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
155
- </a>
156
- <h4 align='center'>Łukasz Grabowski</h4>
157
- </td>
158
- <td id='joshua-liebowitz'>
159
- <a href='https://github.com/taquitos'>
160
- <img src='https://github.com/taquitos.png' width='140px;'>
161
- </a>
162
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
163
- </td>
164
- </tr>
165
- <tr>
166
- <td id='roger-oba'>
167
- <a href='https://github.com/rogerluan'>
168
- <img src='https://github.com/rogerluan.png' width='140px;'>
169
- </a>
170
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
171
- </td>
172
- <td id='felix-krause'>
173
- <a href='https://github.com/KrauseFx'>
174
- <img src='https://github.com/KrauseFx.png' width='140px;'>
175
- </a>
176
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
177
- </td>
178
140
  <td id='daniel-jankowski'>
179
141
  <a href='https://github.com/mollyIV'>
180
142
  <img src='https://github.com/mollyIV.png' width='140px;'>
181
143
  </a>
182
144
  <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
183
145
  </td>
146
+ <td id='andrew-mcburney'>
147
+ <a href='https://github.com/armcburney'>
148
+ <img src='https://github.com/armcburney.png' width='140px;'>
149
+ </a>
150
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
151
+ </td>
184
152
  <td id='manish-rathi'>
185
153
  <a href='https://github.com/crazymanish'>
186
154
  <img src='https://github.com/crazymanish.png' width='140px;'>
187
155
  </a>
188
156
  <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
189
157
  </td>
190
- <td id='helmut-januschka'>
191
- <a href='https://github.com/hjanuschka'>
192
- <img src='https://github.com/hjanuschka.png' width='140px;'>
158
+ <td id='kohki-miki'>
159
+ <a href='https://github.com/giginet'>
160
+ <img src='https://github.com/giginet.png' width='140px;'>
193
161
  </a>
194
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
195
163
  </td>
196
164
  </tr>
197
165
  <tr>
@@ -201,6 +169,38 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
201
169
  </a>
202
170
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
203
171
  </td>
172
+ <td id='roger-oba'>
173
+ <a href='https://github.com/rogerluan'>
174
+ <img src='https://github.com/rogerluan.png' width='140px;'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
177
+ </td>
178
+ <td id='helmut-januschka'>
179
+ <a href='https://github.com/hjanuschka'>
180
+ <img src='https://github.com/hjanuschka.png' width='140px;'>
181
+ </a>
182
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
183
+ </td>
184
+ <td id='olivier-halligon'>
185
+ <a href='https://github.com/AliSoftware'>
186
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
189
+ </td>
190
+ <td id='maksym-grebenets'>
191
+ <a href='https://github.com/mgrebenets'>
192
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
195
+ </td>
196
+ </tr>
197
+ <tr>
198
+ <td id='jérôme-lacoste'>
199
+ <a href='https://github.com/lacostej'>
200
+ <img src='https://github.com/lacostej.png' width='140px;'>
201
+ </a>
202
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
203
+ </td>
204
204
  </table>
205
205
 
206
206
  Special thanks to all [contributors](https://github.com/fastlane/fastlane/graphs/contributors) for extending and improving _fastlane_.
@@ -406,14 +406,16 @@ If you're not using `Fastfile`, you can also use the `force_for_new_devices` opt
406
406
  fastlane match adhoc --force_for_new_devices
407
407
  ```
408
408
 
409
- ##### Templates (aka: custom entitlements)
409
+ ##### Managed capabilities
410
410
 
411
- _match_ can generate profiles that contain custom entitlements by passing in the entitlement's name with the `template_name` parameter.
411
+ > [!IMPORTANT]
412
+ > This feature has been deprecated since May 2025, until Apple provides a new solution. We will update this documentation once we have more information on how to handle managed capabilities in the future.
412
413
 
413
- ```
414
- match(type: "development",
415
- template_name: "Apple Pay Pass Suppression Development")
416
- ```
414
+ Managed capabilities — formerly known as "additional entitlements" or "custom entitlements", enabled via "templates" — are additional capabilities that require Apple's review and approval before they can be distributed.
415
+
416
+ These capabilities used to be enabled by passing a `template_name` parameter to the _match_ action, which would then generate a provisioning profile with the entitlements specified by the given template. However, this feature was never officially supported by Apple's API (undocumented), and they eventually removed it in May 2025 ([see issue #29498](https://github.com/fastlane/fastlane/issues/29498)). Apple still hasn't provided a replacement for this functionality.
417
+
418
+ As a result, the `template_name` parameter was deprecated in the _match_ action, and it will not generate provisioning profiles with custom entitlements.
417
419
 
418
420
  ### Setup Xcode project
419
421
 
@@ -588,7 +588,7 @@ Key | Editable While Live | Directory | Filename | Deprecated Filename
588
588
 
589
589
  ### Available age rating groups
590
590
 
591
- #### Non Boolean
591
+ #### Infrequent/Mild or Frequent/Intense
592
592
 
593
593
  **Values**
594
594
 
@@ -602,29 +602,40 @@ Key | Editable While Live | Directory | Filename | Deprecated Filename
602
602
 
603
603
  **Keys**
604
604
 
605
- - 'alcoholTobaccoOrDrugUseOrReferences'
606
- - 'contests'
607
- - 'gamblingSimulated'
608
- - 'medicalOrTreatmentInformation'
609
- - 'profanityOrCrudeHumor'
610
-
611
- - 'sexualContentGraphicAndNudity'
612
- - 'sexualContentOrNudity'
613
- - 'horrorOrFearThemes'
614
- - 'matureOrSuggestiveThemes'
615
- - 'unrestrictedWebAccess'
616
- - 'violenceCartoonOrFantasy'
617
- - 'violenceRealisticProlongedGraphicOrSadistic'
618
- - 'violenceRealistic'
619
- - 'kidsAgeBand'
605
+ - `alcoholTobaccoOrDrugUseOrReferences`
606
+ - `contests`
607
+ - `gamblingSimulated`
608
+ - `medicalOrTreatmentInformation`
609
+ - `profanityOrCrudeHumor`
610
+
611
+ - `horrorOrFearThemes`
612
+ - `kidsAgeBand`
613
+ - `matureOrSuggestiveThemes`
614
+ - `sexualContentGraphicAndNudity`
615
+ - `sexualContentOrNudity`
616
+ - `violenceCartoonOrFantasy`
617
+ - `violenceRealistic`
618
+ - `violenceRealisticProlongedGraphicOrSadistic`
619
+
620
+ #### Fifteen Plus or Nineteen Plus
621
+
622
+ **Values**
623
+
624
+ - `NONE`
625
+ - `FIFTEEN_PLUS`
626
+ - `NINETEEN_PLUS`
627
+
628
+ **Keys**
629
+
630
+ - `koreaAgeRatingOverride`
620
631
 
621
632
  #### Boolean
622
633
 
623
634
  **Keys**
624
635
 
625
636
  - `gambling`
626
- - 'seventeenPlus'
627
637
  - `unrestrictedWebAccess`
638
+ - `lootBox`
628
639
 
629
640
  #### Kids Age
630
641
 
@@ -39,6 +39,10 @@ module Fastlane
39
39
  obj.public_url.to_s
40
40
  end
41
41
 
42
+ def download_file(bucket_name, key, destination_path)
43
+ Aws::S3::TransferManager.new(client: client).download_file(destination_path, bucket: bucket_name, key: key)
44
+ end
45
+
42
46
  def delete_file(bucket_name, file_name)
43
47
  bucket = find_bucket!(bucket_name)
44
48
  file = bucket.object(file_name)
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.227.2'.freeze
2
+ VERSION = '2.229.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
@@ -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.227.2
20
+ // Generated with fastlane 2.229.0
@@ -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.135]
275
+ // FastlaneRunnerAPIVersion [0.9.137]
@@ -5063,7 +5063,7 @@ public func getManagedPlayStorePublishingRights(jsonKey: OptionalConfigValue<Str
5063
5063
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
5064
5064
  - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
5065
5065
  - readonly: Only fetch existing profile, don't generate new ones
5066
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5066
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
5067
5067
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
5068
5068
  - cachedCertificates: A list of cached certificates
5069
5069
  - cachedDevices: A list of cached devices
@@ -5975,65 +5975,6 @@ public func hgPush(force: OptionalConfigValue<Bool> = .fastlaneDefault(false),
5975
5975
  _ = runner.executeCommand(command)
5976
5976
  }
5977
5977
 
5978
- /**
5979
- Send a error/success message to [HipChat](https://www.hipchat.com/)
5980
-
5981
- - parameters:
5982
- - message: The message to post on HipChat
5983
- - channel: The room or @username
5984
- - apiToken: Hipchat API Token
5985
- - customColor: Specify a custom color, this overrides the success boolean. Can be one of 'yellow', 'red', 'green', 'purple', 'gray', or 'random'
5986
- - success: Was this build successful? (true/false)
5987
- - version: Version of the Hipchat API. Must be 1 or 2
5988
- - notifyRoom: Should the people in the room be notified? (true/false)
5989
- - apiHost: The host of the HipChat-Server API
5990
- - messageFormat: Format of the message to post. Must be either 'html' or 'text'
5991
- - includeHtmlHeader: Should html formatted messages include a preformatted header? (true/false)
5992
- - from: Name the message will appear to be sent from
5993
-
5994
- Send a message to **room** (by default) or a direct message to **@username** with success (green) or failure (red) status.
5995
- */
5996
- public func hipchat(message: String = "",
5997
- channel: String,
5998
- apiToken: String,
5999
- customColor: OptionalConfigValue<String?> = .fastlaneDefault(nil),
6000
- success: OptionalConfigValue<Bool> = .fastlaneDefault(true),
6001
- version: String,
6002
- notifyRoom: OptionalConfigValue<Bool> = .fastlaneDefault(false),
6003
- apiHost: String = "api.hipchat.com",
6004
- messageFormat: String = "html",
6005
- includeHtmlHeader: OptionalConfigValue<Bool> = .fastlaneDefault(true),
6006
- from: String = "fastlane")
6007
- {
6008
- let messageArg = RubyCommand.Argument(name: "message", value: message, type: nil)
6009
- let channelArg = RubyCommand.Argument(name: "channel", value: channel, type: nil)
6010
- let apiTokenArg = RubyCommand.Argument(name: "api_token", value: apiToken, type: nil)
6011
- let customColorArg = customColor.asRubyArgument(name: "custom_color", type: nil)
6012
- let successArg = success.asRubyArgument(name: "success", type: nil)
6013
- let versionArg = RubyCommand.Argument(name: "version", value: version, type: nil)
6014
- let notifyRoomArg = notifyRoom.asRubyArgument(name: "notify_room", type: nil)
6015
- let apiHostArg = RubyCommand.Argument(name: "api_host", value: apiHost, type: nil)
6016
- let messageFormatArg = RubyCommand.Argument(name: "message_format", value: messageFormat, type: nil)
6017
- let includeHtmlHeaderArg = includeHtmlHeader.asRubyArgument(name: "include_html_header", type: nil)
6018
- let fromArg = RubyCommand.Argument(name: "from", value: from, type: nil)
6019
- let array: [RubyCommand.Argument?] = [messageArg,
6020
- channelArg,
6021
- apiTokenArg,
6022
- customColorArg,
6023
- successArg,
6024
- versionArg,
6025
- notifyRoomArg,
6026
- apiHostArg,
6027
- messageFormatArg,
6028
- includeHtmlHeaderArg,
6029
- fromArg]
6030
- let args: [RubyCommand.Argument] = array
6031
- .filter { $0?.value != nil }
6032
- .compactMap { $0 }
6033
- let command = RubyCommand(commandID: "", methodName: "hipchat", className: nil, args: args)
6034
- _ = runner.executeCommand(command)
6035
- }
6036
-
6037
5978
  /**
6038
5979
  Refer to [App Center](https://github.com/Microsoft/fastlane-plugin-appcenter/)
6039
5980
 
@@ -6817,7 +6758,7 @@ public func makeChangelogFromJenkins(fallbackChangelog: String = "",
6817
6758
  - skipDocs: Skip generation of a README.md for the created git repository
6818
6759
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
6819
6760
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
6820
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
6761
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
6821
6762
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
6822
6763
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
6823
6764
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -7056,7 +6997,7 @@ public func match(type: String = matchfile.type,
7056
6997
  - skipDocs: Skip generation of a README.md for the created git repository
7057
6998
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
7058
6999
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
7059
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7000
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
7060
7001
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
7061
7002
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
7062
7003
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -10126,7 +10067,7 @@ public func setupTravis(force: OptionalConfigValue<Bool> = .fastlaneDefault(fals
10126
10067
  - skipCertificateVerification: Skips the verification of the certificates for every existing profiles. This will make sure the provisioning profile can be used on the local machine
10127
10068
  - platform: Set the provisioning profile's platform (i.e. ios, tvos, macos, catalyst)
10128
10069
  - readonly: Only fetch existing profile, don't generate new ones
10129
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
10070
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
10130
10071
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
10131
10072
  - cachedCertificates: A list of cached certificates
10132
10073
  - cachedDevices: A list of cached devices
@@ -11386,7 +11327,7 @@ public func swiftlint(mode: String = "lint",
11386
11327
  - skipDocs: Skip generation of a README.md for the created git repository
11387
11328
  - platform: Set the provisioning profile's platform to work with (i.e. ios, tvos, macos, catalyst)
11388
11329
  - deriveCatalystAppIdentifier: Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
11389
- - templateName: The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
11330
+ - templateName: **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
11390
11331
  - profileName: A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
11391
11332
  - failOnNameTaken: Should the command fail if it was about to create a duplicate of an existing provisioning profile. It can happen due to issues on Apple Developer Portal, when profile to be recreated was not properly deleted first
11392
11333
  - skipCertificateMatching: Set to true if there is no access to Apple developer portal but there are certificates, keys and profiles provided. Only works with match import action
@@ -13684,7 +13625,7 @@ public func xcov(workspace: OptionalConfigValue<String?> = .fastlaneDefault(nil)
13684
13625
  coverallsServiceJobId: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13685
13626
  coverallsRepoToken: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13686
13627
  xcconfig: OptionalConfigValue<String?> = .fastlaneDefault(nil),
13687
- ideFoundationPath: String = "/Applications/Xcode_15.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13628
+ ideFoundationPath: String = "/Applications/Xcode_16.4.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
13688
13629
  legacySupport: OptionalConfigValue<Bool> = .fastlaneDefault(false))
13689
13630
  {
13690
13631
  let workspaceArg = workspace.asRubyArgument(name: "workspace", type: nil)
@@ -13887,4 +13828,4 @@ public let snapshotfile: Snapshotfile = .init()
13887
13828
 
13888
13829
  // Please don't remove the lines below
13889
13830
  // They are used to detect outdated files
13890
- // FastlaneRunnerAPIVersion [0.9.188]
13831
+ // FastlaneRunnerAPIVersion [0.9.190]
@@ -17,4 +17,4 @@ public class Gymfile: GymfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -212,4 +212,4 @@ public extension GymfileProtocol {
212
212
 
213
213
  // Please don't remove the lines below
214
214
  // They are used to detect outdated files
215
- // FastlaneRunnerAPIVersion [0.9.138]
215
+ // FastlaneRunnerAPIVersion [0.9.140]
@@ -17,4 +17,4 @@ public class Matchfile: MatchfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -146,7 +146,7 @@ public protocol MatchfileProtocol: AnyObject {
146
146
  /// Enable this if you have the Mac Catalyst capability enabled and your project was created with Xcode 11.3 or earlier. Prepends 'maccatalyst.' to the app identifier for the provisioning profile mapping
147
147
  var deriveCatalystAppIdentifier: Bool { get }
148
148
 
149
- /// The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
149
+ /// **DEPRECATED!** Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities - The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. "Apple Pay Pass Suppression Development")
150
150
  var templateName: String? { get }
151
151
 
152
152
  /// A custom name for the provisioning profile. This will replace the default provisioning profile name if specified
@@ -232,4 +232,4 @@ public extension MatchfileProtocol {
232
232
 
233
233
  // Please don't remove the lines below
234
234
  // They are used to detect outdated files
235
- // FastlaneRunnerAPIVersion [0.9.132]
235
+ // FastlaneRunnerAPIVersion [0.9.134]
@@ -17,4 +17,4 @@ public class Precheckfile: PrecheckfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.131]
55
+ // FastlaneRunnerAPIVersion [0.9.133]
@@ -230,7 +230,7 @@ class Logger {
230
230
  case verbose
231
231
  }
232
232
 
233
- public static var logMode: LogMode = .normal
233
+ static var logMode: LogMode = .normal
234
234
 
235
235
  func log(message: String) {
236
236
  let timestamp = NSDate().timeIntervalSince1970
@@ -17,4 +17,4 @@ public class Scanfile: ScanfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -324,4 +324,4 @@ public extension ScanfileProtocol {
324
324
 
325
325
  // Please don't remove the lines below
326
326
  // They are used to detect outdated files
327
- // FastlaneRunnerAPIVersion [0.9.143]
327
+ // FastlaneRunnerAPIVersion [0.9.145]
@@ -17,4 +17,4 @@ public class Screengrabfile: ScreengrabfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.133]
99
+ // FastlaneRunnerAPIVersion [0.9.135]
@@ -17,4 +17,4 @@ public class Snapshotfile: SnapshotfileProtocol {
17
17
  // during the `init` process, and you won't see this message
18
18
  }
19
19
 
20
- // Generated with fastlane 2.227.2
20
+ // Generated with fastlane 2.229.0
@@ -208,4 +208,4 @@ public extension SnapshotfileProtocol {
208
208
 
209
209
  // Please don't remove the lines below
210
210
  // They are used to detect outdated files
211
- // FastlaneRunnerAPIVersion [0.9.127]
211
+ // FastlaneRunnerAPIVersion [0.9.129]
@@ -51,7 +51,7 @@ class SocketClient: NSObject {
51
51
 
52
52
  private(set) weak var socketDelegate: SocketClientDelegateProtocol?
53
53
 
54
- public private(set) var socketStatus: SocketStatus
54
+ private(set) var socketStatus: SocketStatus
55
55
 
56
56
  // localhost only, this prevents other computers from connecting
57
57
  init(host: String = "localhost", port: UInt32 = 2000, commandTimeoutSeconds: Int = defaultCommandTimeoutSeconds, socketDelegate: SocketClientDelegateProtocol) {
@@ -110,13 +110,13 @@ class SocketClient: NSObject {
110
110
  socketDelegate?.connectionsOpened()
111
111
  }
112
112
 
113
- public func send(rubyCommand: RubyCommandable) {
113
+ func send(rubyCommand: RubyCommandable) {
114
114
  verbose(message: "sending: \(rubyCommand.json)")
115
115
  send(string: rubyCommand.json)
116
116
  writeSemaphore.signal()
117
117
  }
118
118
 
119
- public func sendComplete() {
119
+ func sendComplete() {
120
120
  closeSession(sendAbort: true)
121
121
  }
122
122
 
@@ -193,11 +193,11 @@ class SocketClient: NSObject {
193
193
  socketDelegate?.connectionsClosed()
194
194
  }
195
195
 
196
- public func enter() {
196
+ func enter() {
197
197
  dispatchGroup.enter()
198
198
  }
199
199
 
200
- public func leave() {
200
+ func leave() {
201
201
  readSemaphore.signal()
202
202
  writeSemaphore.signal()
203
203
  }
@@ -8,8 +8,7 @@ task(:brew) do
8
8
  raise '`brew` is required. Please install brew. https://brew.sh/' unless system('which brew')
9
9
 
10
10
  puts('➡️ Brew')
11
- sh('brew update')
12
- sh('brew bundle')
11
+ sh('brew bundle check || brew bundle install')
13
12
  end
14
13
 
15
14
  task(:lint) do
@@ -327,6 +327,7 @@ module Match
327
327
  env_name: "MATCH_PROVISIONING_PROFILE_TEMPLATE_NAME",
328
328
  description: "The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. \"Apple Pay Pass Suppression Development\")",
329
329
  optional: true,
330
+ deprecated: "Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities",
330
331
  default_value: nil),
331
332
  FastlaneCore::ConfigItem.new(key: :profile_name,
332
333
  env_name: "MATCH_PROVISIONING_PROFILE_NAME",
@@ -105,12 +105,9 @@ module Match
105
105
  # so that we limit the download to only files that are specific to this team, and avoid downloads + decryption of unnecessary files.
106
106
  key_prefix = team_id.nil? ? s3_object_prefix : File.join(s3_object_prefix, team_id, '').delete_prefix('/')
107
107
 
108
- s3_client.find_bucket!(s3_bucket).objects(prefix: key_prefix).each do |object|
109
- # Prevent download if the file path is a directory.
110
- # We need to check if string ends with "/" instead of using `File.directory?` because
111
- # the string represent a remote location, not a local file in disk.
112
- next if object.key.end_with?("/")
113
-
108
+ objects_to_download = s3_client.find_bucket!(s3_bucket).objects(prefix: key_prefix).reject { |object| object.key.end_with?("/") }
109
+ UI.message("Downloading #{objects_to_download.count} files from S3 bucket...")
110
+ objects_to_download.each do |object|
114
111
  file_path = strip_s3_object_prefix(object.key) # :s3_object_prefix:team_id/path/to/file
115
112
 
116
113
  # strip s3_prefix from file_path
@@ -119,7 +116,7 @@ module Match
119
116
  FileUtils.mkdir_p(File.expand_path("..", download_path))
120
117
  UI.verbose("Downloading file from S3 '#{file_path}' on bucket #{self.s3_bucket}")
121
118
 
122
- object.download_file(download_path)
119
+ s3_client.download_file(s3_bucket, object.key, download_path)
123
120
  end
124
121
  UI.verbose("Successfully downloaded files from S3 to #{self.working_directory}")
125
122
  end
@@ -190,6 +190,7 @@ module Sigh
190
190
  env_name: "SIGH_PROVISIONING_PROFILE_TEMPLATE_NAME",
191
191
  description: "The name of provisioning profile template. If the developer account has provisioning profile templates (aka: custom entitlements), the template name can be found by inspecting the Entitlements drop-down while creating/editing a provisioning profile (e.g. \"Apple Pay Pass Suppression Development\")",
192
192
  optional: true,
193
+ deprecated: "Removed since May 2025 on App Store Connect API OpenAPI v3.8.0 - Learn more: https://docs.fastlane.tools/actions/match/#managed-capabilities",
193
194
  default_value: nil),
194
195
  FastlaneCore::ConfigItem.new(key: :fail_on_name_taken,
195
196
  env_name: "SIGH_FAIL_ON_NAME_TAKEN",
@@ -174,13 +174,16 @@ module Sigh
174
174
 
175
175
  UI.important("Creating new provisioning profile for '#{Sigh.config[:app_identifier]}' with name '#{name}' for '#{Sigh.config[:platform]}' platform")
176
176
 
177
+ unless Sigh.config[:template_name].nil?
178
+ UI.important("Template name is set to '#{Sigh.config[:template_name]}', however, this is not supported by the App Store Connect API anymore, since May 2025. The template name will be ignored. For more information: https://docs.fastlane.tools/actions/match/#managed-capabilities")
179
+ end
180
+
177
181
  profile = Spaceship::ConnectAPI::Profile.create(
178
182
  name: name,
179
183
  profile_type: profile_type,
180
184
  bundle_id_id: bundle_id.id,
181
185
  certificate_ids: certificates_to_use.map(&:id),
182
- device_ids: devices_to_use.map(&:id),
183
- template_name: Sigh.config[:template_name]
186
+ device_ids: devices_to_use.map(&:id)
184
187
  )
185
188
 
186
189
  profile
@@ -8,6 +8,7 @@ module Spaceship
8
8
  attr_accessor :alcohol_tobacco_or_drug_use_or_references
9
9
  attr_accessor :contests
10
10
  attr_accessor :gambling_simulated
11
+ attr_accessor :korea_age_rating_override
11
12
  attr_accessor :medical_or_treatment_information
12
13
  attr_accessor :profanity_or_crude_humor
13
14
  attr_accessor :sexual_content_graphic_and_nudity
@@ -20,7 +21,7 @@ module Spaceship
20
21
 
21
22
  # Boolean
22
23
  attr_accessor :gambling
23
- attr_accessor :seventeen_plus
24
+ attr_accessor :loot_box
24
25
  attr_accessor :unrestricted_web_access
25
26
 
26
27
  # KidsAge
@@ -46,9 +47,10 @@ module Spaceship
46
47
  "contests" => "contests",
47
48
  "gambling" => "gambling",
48
49
  "gamblingSimulated" => "gambling_simulated",
50
+ "koreaAgeRatingOverride" => "korea_age_rating_override",
51
+ "lootBox" => "loot_box",
49
52
  "medicalOrTreatmentInformation" => "medical_or_treatment_information",
50
53
  "profanityOrCrudeHumor" => "profanity_or_crude_humor",
51
- "seventeenPlus" => "seventeen_plus",
52
54
  "sexualContentGraphicAndNudity" => "sexual_content_graphic_and_nudity",
53
55
  "sexualContentOrNudity" => "sexual_content_or_nudity",
54
56
  "horrorOrFearThemes" => "horror_or_fear_themes",
@@ -84,7 +84,7 @@ module Spaceship
84
84
  return resps.flat_map(&:to_models)
85
85
  end
86
86
 
87
- def self.create(client: nil, name: nil, profile_type: nil, bundle_id_id: nil, certificate_ids: nil, device_ids: nil, template_name: nil)
87
+ def self.create(client: nil, name: nil, profile_type: nil, bundle_id_id: nil, certificate_ids: nil, device_ids: nil)
88
88
  client ||= Spaceship::ConnectAPI
89
89
  resp = client.post_profiles(
90
90
  bundle_id_id: bundle_id_id,
@@ -92,8 +92,7 @@ module Spaceship
92
92
  devices: device_ids,
93
93
  attributes: {
94
94
  name: name,
95
- profileType: profile_type,
96
- templateName: template_name
95
+ profileType: profile_type
97
96
  }
98
97
  )
99
98
  return resp.to_models.first
metadata CHANGED
@@ -1,39 +1,39 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.227.2
4
+ version: 2.229.0
5
5
  platform: ruby
6
6
  authors:
7
- - Satoshi Namai
8
- - Manish Rathi
9
7
  - Felix Krause
10
- - Jimmy Dee
8
+ - Helmut Januschka
11
9
  - Andrew McBurney
12
- - Stefan Natchev
13
- - Kohki Miki
14
- - Matthew Ellis
15
- - Roger Oba
10
+ - Daniel Jankowski
11
+ - Iulian Onofrei
12
+ - Danielle Tomlinson
13
+ - Jérôme Lacoste
16
14
  - Aaron Brager
17
15
  - Maksym Grebenets
18
- - Josh Holtz
19
- - Daniel Jankowski
16
+ - Max Ott
20
17
  - Jorge Revuelta H
21
- - Joshua Liebowitz
18
+ - Łukasz Grabowski
19
+ - Jimmy Dee
20
+ - Manu Wallner
21
+ - Kohki Miki
22
+ - Josh Holtz
23
+ - Satoshi Namai
22
24
  - Olivier Halligon
23
25
  - Luka Mirosevic
24
- - Jérôme Lacoste
25
- - Helmut Januschka
26
- - Manu Wallner
26
+ - Matthew Ellis
27
+ - Stefan Natchev
28
+ - Joshua Liebowitz
29
+ - Manish Rathi
27
30
  - Jan Piotrowski
28
31
  - Fumiya Nakamura
29
- - Max Ott
30
- - Łukasz Grabowski
31
- - Danielle Tomlinson
32
- - Iulian Onofrei
32
+ - Roger Oba
33
33
  autorequire:
34
34
  bindir: bin
35
35
  cert_chain: []
36
- date: 2025-05-05 00:00:00.000000000 Z
36
+ date: 2025-11-21 00:00:00.000000000 Z
37
37
  dependencies:
38
38
  - !ruby/object:Gem::Dependency
39
39
  name: addressable
@@ -735,6 +735,48 @@ dependencies:
735
735
  - - "~>"
736
736
  - !ruby/object:Gem::Version
737
737
  version: 0.4.1
738
+ - !ruby/object:Gem::Dependency
739
+ name: mutex_m
740
+ requirement: !ruby/object:Gem::Requirement
741
+ requirements:
742
+ - - "~>"
743
+ - !ruby/object:Gem::Version
744
+ version: 0.3.0
745
+ type: :runtime
746
+ prerelease: false
747
+ version_requirements: !ruby/object:Gem::Requirement
748
+ requirements:
749
+ - - "~>"
750
+ - !ruby/object:Gem::Version
751
+ version: 0.3.0
752
+ - !ruby/object:Gem::Dependency
753
+ name: csv
754
+ requirement: !ruby/object:Gem::Requirement
755
+ requirements:
756
+ - - "~>"
757
+ - !ruby/object:Gem::Version
758
+ version: '3.3'
759
+ type: :runtime
760
+ prerelease: false
761
+ version_requirements: !ruby/object:Gem::Requirement
762
+ requirements:
763
+ - - "~>"
764
+ - !ruby/object:Gem::Version
765
+ version: '3.3'
766
+ - !ruby/object:Gem::Dependency
767
+ name: abbrev
768
+ requirement: !ruby/object:Gem::Requirement
769
+ requirements:
770
+ - - "~>"
771
+ - !ruby/object:Gem::Version
772
+ version: 0.1.2
773
+ type: :runtime
774
+ prerelease: false
775
+ version_requirements: !ruby/object:Gem::Requirement
776
+ requirements:
777
+ - - "~>"
778
+ - !ruby/object:Gem::Version
779
+ version: 0.1.2
738
780
  description: The easiest way to automate beta deployments and releases for your iOS
739
781
  and Android apps
740
782
  email:
@@ -928,7 +970,6 @@ files:
928
970
  - fastlane/lib/fastlane/actions/hg_commit_version_bump.rb
929
971
  - fastlane/lib/fastlane/actions/hg_ensure_clean_status.rb
930
972
  - fastlane/lib/fastlane/actions/hg_push.rb
931
- - fastlane/lib/fastlane/actions/hipchat.rb
932
973
  - fastlane/lib/fastlane/actions/hockey.rb
933
974
  - fastlane/lib/fastlane/actions/ifttt.rb
934
975
  - fastlane/lib/fastlane/actions/import.rb
@@ -1,200 +0,0 @@
1
- module Fastlane
2
- module Actions
3
- module SharedValues
4
- end
5
-
6
- class HipchatAction < Action
7
- def self.run(options)
8
- require 'net/http'
9
- require 'uri'
10
-
11
- api_token = options[:api_token]
12
- api_version = options[:version]
13
- api_host = options[:api_host]
14
-
15
- message_format = options[:message_format]
16
-
17
- channel = options[:channel]
18
- if ['yellow', 'red', 'green', 'purple', 'gray', 'random'].include?(options[:custom_color]) == true
19
- color = options[:custom_color]
20
- else
21
- color = (options[:success] ? 'green' : 'red')
22
- end
23
-
24
- from = options[:from]
25
-
26
- message = options[:message]
27
- if (message_format == "html") && (options[:include_html_header] == true)
28
- message = "<table><tr><td><img src='https://fastlane.tools/assets/img/fastlane_icon.png' width='50' height='50'></td><td>#{message[0..9999]}</td></tr></table>"
29
- end
30
-
31
- if api_version.to_i == 1
32
- ########## running on V1 ##########
33
- if user?(channel)
34
- UI.user_error!("HipChat private message not working with API V1 please use API V2 instead")
35
- else
36
- uri = URI.parse("https://#{api_host}/v1/rooms/message")
37
- response = Net::HTTP.post_form(uri, { 'from' => from,
38
- 'auth_token' => api_token,
39
- 'color' => color,
40
- 'message_format' => message_format,
41
- 'room_id' => channel,
42
- 'message' => message,
43
- 'notify' => options[:notify_room] ? '1' : '0' })
44
-
45
- check_response_code(response, channel)
46
- end
47
- else
48
- ########## running on V2 ##########
49
- # Escape channel's name to guarantee it is a valid URL resource.
50
- # First of all we verify that the value is not already escaped,
51
- # escaping an escaped value will produce a wrong channel name.
52
- require 'addressable/uri'
53
- escaped_channel = Addressable::URI.encode(channel) == channel ? Addressable::URI.encode(channel) : channel
54
- if user?(channel)
55
- params = { 'message' => message, 'message_format' => message_format }
56
- json_headers = { 'Content-Type' => 'application/json',
57
- 'Accept' => 'application/json', 'Authorization' => "Bearer #{api_token}" }
58
-
59
- uri = URI.parse("https://#{api_host}/v2/user/#{escaped_channel}/message")
60
- http = Net::HTTP.new(uri.host, uri.port)
61
- http.use_ssl = true
62
-
63
- response = http.post(uri.path, params.to_json, json_headers)
64
- else
65
- uri = URI.parse("https://#{api_host}/v2/room/#{escaped_channel}/notification")
66
- response = Net::HTTP.post_form(uri, { 'from' => from,
67
- 'auth_token' => api_token,
68
- 'color' => color,
69
- 'message_format' => message_format,
70
- 'message' => message,
71
- 'notify' => options[:notify_room] ? 'true' : 'false' })
72
- end
73
- check_response_code(response, channel)
74
- end
75
- end
76
-
77
- def self.user?(channel)
78
- channel.to_s.start_with?('@')
79
- end
80
-
81
- def self.check_response_code(response, channel)
82
- case response.code.to_i
83
- when 200, 204
84
- true
85
- when 404
86
- UI.user_error!("Channel `#{channel}` not found")
87
- when 401
88
- UI.user_error!("Access denied for channel `#{channel}`")
89
- else
90
- UI.user_error!("Unexpected #{response.code} for `#{channel}` with response: #{response.body}")
91
- end
92
- end
93
-
94
- def self.description
95
- "Send a error/success message to [HipChat](https://www.hipchat.com/)"
96
- end
97
-
98
- def self.available_options
99
- [
100
- FastlaneCore::ConfigItem.new(key: :message,
101
- env_name: "FL_HIPCHAT_MESSAGE",
102
- description: "The message to post on HipChat",
103
- default_value: ''),
104
- FastlaneCore::ConfigItem.new(key: :channel,
105
- env_name: "FL_HIPCHAT_CHANNEL",
106
- description: "The room or @username"),
107
- FastlaneCore::ConfigItem.new(key: :api_token,
108
- env_name: "HIPCHAT_API_TOKEN",
109
- sensitive: true,
110
- description: "Hipchat API Token",
111
- verify_block: proc do |value|
112
- unless value.to_s.length > 0
113
- UI.error("Please add 'ENV[\"HIPCHAT_API_TOKEN\"] = \"your token\"' to your Fastfile's `before_all` section.")
114
- UI.user_error!("No HIPCHAT_API_TOKEN given.")
115
- end
116
- end),
117
- FastlaneCore::ConfigItem.new(key: :custom_color,
118
- env_name: "FL_HIPCHAT_CUSTOM_COLOR",
119
- description: "Specify a custom color, this overrides the success boolean. Can be one of 'yellow', 'red', 'green', 'purple', 'gray', or 'random'",
120
- optional: true),
121
- FastlaneCore::ConfigItem.new(key: :success,
122
- env_name: "FL_HIPCHAT_SUCCESS",
123
- description: "Was this build successful? (true/false)",
124
- optional: true,
125
- default_value: true,
126
- type: Boolean),
127
- FastlaneCore::ConfigItem.new(key: :version,
128
- env_name: "HIPCHAT_API_VERSION",
129
- description: "Version of the Hipchat API. Must be 1 or 2",
130
- verify_block: proc do |value|
131
- if value.nil? || ![1, 2].include?(value.to_i)
132
- UI.error("Please add 'ENV[\"HIPCHAT_API_VERSION\"] = \"1 or 2\"' to your Fastfile's `before_all` section.")
133
- UI.user_error!("No HIPCHAT_API_VERSION given.")
134
- end
135
- end),
136
- FastlaneCore::ConfigItem.new(key: :notify_room,
137
- env_name: "HIPCHAT_NOTIFY_ROOM",
138
- description: "Should the people in the room be notified? (true/false)",
139
- default_value: false,
140
- optional: true,
141
- type: Boolean),
142
- FastlaneCore::ConfigItem.new(key: :api_host,
143
- env_name: "HIPCHAT_API_HOST",
144
- description: "The host of the HipChat-Server API",
145
- default_value: "api.hipchat.com",
146
- optional: true),
147
- FastlaneCore::ConfigItem.new(key: :message_format,
148
- env_name: "FL_HIPCHAT_MESSAGE_FORMAT",
149
- description: "Format of the message to post. Must be either 'html' or 'text'",
150
- default_value: "html",
151
- optional: true,
152
- verify_block: proc do |value|
153
- unless ["html", "text"].include?(value.to_s)
154
- UI.error("Please specify the message format as either 'html' or 'text'.")
155
- UI.user_error!("Unrecognized message_format.")
156
- end
157
- end),
158
- FastlaneCore::ConfigItem.new(key: :include_html_header,
159
- env_name: "FL_HIPCHAT_INCLUDE_HTML_HEADER",
160
- description: "Should html formatted messages include a preformatted header? (true/false)",
161
- default_value: true,
162
- optional: true,
163
- type: Boolean),
164
- FastlaneCore::ConfigItem.new(key: :from,
165
- env_name: "FL_HIPCHAT_FROM",
166
- description: "Name the message will appear to be sent from",
167
- default_value: "fastlane",
168
- optional: true)
169
- ]
170
- end
171
-
172
- def self.author
173
- "jingx23"
174
- end
175
-
176
- def self.is_supported?(platform)
177
- true
178
- end
179
-
180
- def self.details
181
- "Send a message to **room** (by default) or a direct message to **@username** with success (green) or failure (red) status."
182
- end
183
-
184
- def self.example_code
185
- [
186
- 'hipchat(
187
- message: "App successfully released!",
188
- message_format: "html", # or "text", defaults to "html"
189
- channel: "Room or @username",
190
- success: true
191
- )'
192
- ]
193
- end
194
-
195
- def self.category
196
- :notifications
197
- end
198
- end
199
- end
200
- end