fastlane 2.241.0 → 2.241.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 696cd16eb3defc78305bdebccbc787402841c1105199cfd437d15f019e617024
4
- data.tar.gz: ab772bcd92b21da5da03746f3e7bdab86e60f5ff6771696e2beb5cbd5c673b4d
3
+ metadata.gz: 41082316db6260b452820acb2f6254dd8666b30092363544b46f4bf7da8a372d
4
+ data.tar.gz: 72020a428f0804273e1dbe44b2ae1dcac74b2eede448370932cbf63b94f3d5f4
5
5
  SHA512:
6
- metadata.gz: fb16eaacf91b754e72424d9780054f13b49040aadb738c86746dba6fa75ff3e275af98621aeda98794b47a1a3ad982d91071b6c9b1642da7e243a0d187a86739
7
- data.tar.gz: e116e4c1c5f59831e65a20e676f9f8735807ae86929efb06bc5d97d97e11182361ea2d783c9da2ced56276f6d2183bfbfd863e5fcb7e7add57f5f1961543e84f
6
+ metadata.gz: da0f67a4715290e286ef7faf42aa12b73ccc2c3de580f96807b22dda347411b0fb138c21284a91f18f983825555161bd6072556fb980d1c14976a8f76a3a1b8a
7
+ data.tar.gz: c22918d93563fd3181c3f4cf3fa21c48873e16b0130ac8a5453145311943dd34b822e250e85ddcbcaccfc2b843934a355e562654ce2144cfdea6f56f67011b62
data/README.md CHANGED
@@ -30,61 +30,61 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
30
30
  <!-- team:start -->
31
31
  <table id='team'>
32
32
  <tr>
33
+ <td id='stefan-natchev'>
34
+ <a href='https://github.com/snatchev'>
35
+ <img src='https://github.com/snatchev.png?size=200' width='140'>
36
+ </a>
37
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
38
+ </td>
33
39
  <td id='jan-piotrowski'>
34
40
  <a href='https://github.com/janpio'>
35
41
  <img src='https://github.com/janpio.png?size=200' width='140'>
36
42
  </a>
37
43
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
38
44
  </td>
45
+ <td id='connor-tumbleson'>
46
+ <a href='https://github.com/ibotpeaches'>
47
+ <img src='https://github.com/ibotpeaches.png?size=200' width='140'>
48
+ </a>
49
+ <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
50
+ </td>
51
+ <td id='felix-krause'>
52
+ <a href='https://github.com/KrauseFx'>
53
+ <img src='https://github.com/KrauseFx.png?size=200' width='140'>
54
+ </a>
55
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
56
+ </td>
39
57
  <td id='jérôme-lacoste'>
40
58
  <a href='https://github.com/lacostej'>
41
59
  <img src='https://github.com/lacostej.png?size=200' width='140'>
42
60
  </a>
43
61
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
44
62
  </td>
63
+ </tr>
64
+ <tr>
65
+ <td id='roger-oba'>
66
+ <a href='https://github.com/rogerluan'>
67
+ <img src='https://github.com/rogerluan.png?size=200' width='140'>
68
+ </a>
69
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
70
+ </td>
45
71
  <td id='joshua-liebowitz'>
46
72
  <a href='https://github.com/taquitos'>
47
73
  <img src='https://github.com/taquitos.png?size=200' width='140'>
48
74
  </a>
49
75
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
50
76
  </td>
51
- <td id='josh-holtz'>
52
- <a href='https://github.com/joshdholtz'>
53
- <img src='https://github.com/joshdholtz.png?size=200' width='140'>
54
- </a>
55
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
56
- </td>
57
- <td id='stefan-natchev'>
58
- <a href='https://github.com/snatchev'>
59
- <img src='https://github.com/snatchev.png?size=200' width='140'>
60
- </a>
61
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
62
- </td>
63
- </tr>
64
- <tr>
65
77
  <td id='olivier-halligon'>
66
78
  <a href='https://github.com/AliSoftware'>
67
79
  <img src='https://github.com/AliSoftware.png?size=200' width='140'>
68
80
  </a>
69
81
  <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
70
82
  </td>
71
- <td id='felix-krause'>
72
- <a href='https://github.com/KrauseFx'>
73
- <img src='https://github.com/KrauseFx.png?size=200' width='140'>
74
- </a>
75
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
76
- </td>
77
- <td id='connor-tumbleson'>
78
- <a href='https://github.com/ibotpeaches'>
79
- <img src='https://github.com/ibotpeaches.png?size=200' width='140'>
80
- </a>
81
- <h4 align='center'><a href='https://twitter.com/ibotpeaches'>Connor Tumbleson</a></h4>
82
- </td>
83
- <td id='roger-oba'>
84
- <a href='https://github.com/rogerluan'>
85
- <img src='https://github.com/rogerluan.png?size=200' width='140'>
83
+ <td id='josh-holtz'>
84
+ <a href='https://github.com/joshdholtz'>
85
+ <img src='https://github.com/joshdholtz.png?size=200' width='140'>
86
86
  </a>
87
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
87
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
88
88
  </td>
89
89
  </tr>
90
90
  </table>
@@ -94,24 +94,24 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
94
94
  _fastlane_ wouldn't be what it is today without the countless hours these former team members have dedicated to the project ❤️
95
95
 
96
96
  <p id='alumni'>
97
- <a href='https://github.com/endocrimes'>Danielle Tomlinson</a>,
98
- <a href='https://github.com/crazymanish'>Manish Rathi</a>,
99
- <a href='https://github.com/ainame'>Satoshi Namai</a>,
100
- <a href='https://github.com/giginet'>Kohki Miki</a>,
101
97
  <a href='https://github.com/lmirosevic'>Luka Mirosevic</a>,
102
98
  <a href='https://github.com/minuscorp'>Jorge Revuelta H</a>,
103
- <a href='https://github.com/mollyIV'>Daniel Jankowski</a>,
104
- <a href='https://github.com/armcburney'>Andrew McBurney</a>,
105
- <a href='https://github.com/max-ott'>Max Ott</a>,
106
- <a href='https://github.com/lucgrabowski'>Łukasz Grabowski</a>,
107
- <a href='https://github.com/matthewellis'>Matthew Ellis</a>,
108
- <a href='https://github.com/jdee'>Jimmy Dee</a>,
109
- <a href='https://github.com/nafu'>Fumiya Nakamura</a>,
110
- <a href='https://github.com/hjanuschka'>Helmut Januschka</a>,
111
99
  <a href='https://github.com/milch'>Manu Wallner</a>,
100
+ <a href='https://github.com/nafu'>Fumiya Nakamura</a>,
101
+ <a href='https://github.com/revolter'>Iulian Onofrei</a>,
102
+ <a href='https://github.com/ainame'>Satoshi Namai</a>,
112
103
  <a href='https://github.com/getaaron'>Aaron Brager</a>,
104
+ <a href='https://github.com/hjanuschka'>Helmut Januschka</a>,
105
+ <a href='https://github.com/max-ott'>Max Ott</a>,
106
+ <a href='https://github.com/mollyIV'>Daniel Jankowski</a>,
107
+ <a href='https://github.com/matthewellis'>Matthew Ellis</a>,
113
108
  <a href='https://github.com/mgrebenets'>Maksym Grebenets</a>,
114
- <a href='https://github.com/revolter'>Iulian Onofrei</a>
109
+ <a href='https://github.com/armcburney'>Andrew McBurney</a>,
110
+ <a href='https://github.com/giginet'>Kohki Miki</a>,
111
+ <a href='https://github.com/endocrimes'>Danielle Tomlinson</a>,
112
+ <a href='https://github.com/crazymanish'>Manish Rathi</a>,
113
+ <a href='https://github.com/jdee'>Jimmy Dee</a>,
114
+ <a href='https://github.com/lucgrabowski'>Łukasz Grabowski</a>
115
115
  </p>
116
116
  <!-- team:end -->
117
117
 
@@ -19,6 +19,7 @@ module Deliver
19
19
  DisplayType::APP_IPHONE_61 => "iPhone 14 Pro",
20
20
  DisplayType::APP_IPHONE_65 => "iPhone XS Max",
21
21
  DisplayType::APP_IPHONE_67 => "iPhone 14 Pro Max",
22
+ DisplayType::APP_IPHONE_DUO => "iPhone Duo",
22
23
  DisplayType::APP_IPAD_97 => "iPad",
23
24
  DisplayType::APP_IPAD_105 => "iPad 10.5",
24
25
  DisplayType::APP_IPAD_PRO_3GEN_11 => "iPad 11",
@@ -100,6 +101,13 @@ module Deliver
100
101
  [960, 600],
101
102
  [960, 640]
102
103
  ],
104
+ # iPhone Duo outer and inner displays
105
+ DisplayType::APP_IPHONE_DUO => [
106
+ [1398, 2034],
107
+ [2034, 1398],
108
+ [2007, 2853],
109
+ [2853, 2007]
110
+ ],
103
111
  DisplayType::APP_IPAD_97 => [
104
112
  [1024, 748],
105
113
  [1024, 768],
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.241.0'.freeze
2
+ VERSION = '2.241.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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -539,4 +539,4 @@ public extension DeliverfileProtocol {
539
539
 
540
540
  // Please don't remove the lines below
541
541
  // They are used to detect outdated files
542
- // FastlaneRunnerAPIVersion [0.9.156]
542
+ // FastlaneRunnerAPIVersion [0.9.157]
@@ -3437,8 +3437,6 @@ public func createAppOnManagedPlayStore(jsonKey: OptionalConfigValue<String?> =
3437
3437
 
3438
3438
  - parameters:
3439
3439
  - username: Your Apple ID Username
3440
- - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
3441
- - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
3442
3440
  - appIdentifier: App Identifier (Bundle ID, e.g. com.krausefx.app)
3443
3441
  - bundleIdentifierSuffix: App Identifier Suffix (Ignored if App Identifier does not end with .*)
3444
3442
  - appName: App Name
@@ -3463,8 +3461,6 @@ public func createAppOnManagedPlayStore(jsonKey: OptionalConfigValue<String?> =
3463
3461
  For more information about _produce_, visit its documentation page: [https://docs.fastlane.tools/actions/produce/](https://docs.fastlane.tools/actions/produce/).
3464
3462
  */
3465
3463
  public func createAppOnline(username: String,
3466
- apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3467
- apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
3468
3464
  appIdentifier: String,
3469
3465
  bundleIdentifierSuffix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
3470
3466
  appName: String,
@@ -3485,8 +3481,6 @@ public func createAppOnline(username: String,
3485
3481
  itcTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil))
3486
3482
  {
3487
3483
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
3488
- let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
3489
- let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
3490
3484
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
3491
3485
  let bundleIdentifierSuffixArg = bundleIdentifierSuffix.asRubyArgument(name: "bundle_identifier_suffix", type: nil)
3492
3486
  let appNameArg = RubyCommand.Argument(name: "app_name", value: appName, type: nil)
@@ -3506,8 +3500,6 @@ public func createAppOnline(username: String,
3506
3500
  let itcTeamIdArg = RubyCommand.Argument(name: "itc_team_id", value: itcTeamId, type: nil)
3507
3501
  let itcTeamNameArg = itcTeamName.asRubyArgument(name: "itc_team_name", type: nil)
3508
3502
  let array: [RubyCommand.Argument?] = [usernameArg,
3509
- apiKeyPathArg,
3510
- apiKeyArg,
3511
3503
  appIdentifierArg,
3512
3504
  bundleIdentifierSuffixArg,
3513
3505
  appNameArg,
@@ -8437,8 +8429,6 @@ public func println(message: OptionalConfigValue<String?> = .fastlaneDefault(nil
8437
8429
 
8438
8430
  - parameters:
8439
8431
  - username: Your Apple ID Username
8440
- - apiKeyPath: Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)
8441
- - apiKey: Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)
8442
8432
  - appIdentifier: App Identifier (Bundle ID, e.g. com.krausefx.app)
8443
8433
  - bundleIdentifierSuffix: App Identifier Suffix (Ignored if App Identifier does not end with .*)
8444
8434
  - appName: App Name
@@ -8463,8 +8453,6 @@ public func println(message: OptionalConfigValue<String?> = .fastlaneDefault(nil
8463
8453
  For more information about _produce_, visit its documentation page: [https://docs.fastlane.tools/actions/produce/](https://docs.fastlane.tools/actions/produce/).
8464
8454
  */
8465
8455
  public func produce(username: String,
8466
- apiKeyPath: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8467
- apiKey: OptionalConfigValue<[String: Any]?> = .fastlaneDefault(nil),
8468
8456
  appIdentifier: String,
8469
8457
  bundleIdentifierSuffix: OptionalConfigValue<String?> = .fastlaneDefault(nil),
8470
8458
  appName: String,
@@ -8485,8 +8473,6 @@ public func produce(username: String,
8485
8473
  itcTeamName: OptionalConfigValue<String?> = .fastlaneDefault(nil))
8486
8474
  {
8487
8475
  let usernameArg = RubyCommand.Argument(name: "username", value: username, type: nil)
8488
- let apiKeyPathArg = apiKeyPath.asRubyArgument(name: "api_key_path", type: nil)
8489
- let apiKeyArg = apiKey.asRubyArgument(name: "api_key", type: nil)
8490
8476
  let appIdentifierArg = RubyCommand.Argument(name: "app_identifier", value: appIdentifier, type: nil)
8491
8477
  let bundleIdentifierSuffixArg = bundleIdentifierSuffix.asRubyArgument(name: "bundle_identifier_suffix", type: nil)
8492
8478
  let appNameArg = RubyCommand.Argument(name: "app_name", value: appName, type: nil)
@@ -8506,8 +8492,6 @@ public func produce(username: String,
8506
8492
  let itcTeamIdArg = RubyCommand.Argument(name: "itc_team_id", value: itcTeamId, type: nil)
8507
8493
  let itcTeamNameArg = itcTeamName.asRubyArgument(name: "itc_team_name", type: nil)
8508
8494
  let array: [RubyCommand.Argument?] = [usernameArg,
8509
- apiKeyPathArg,
8510
- apiKeyArg,
8511
8495
  appIdentifierArg,
8512
8496
  bundleIdentifierSuffixArg,
8513
8497
  appNameArg,
@@ -14261,4 +14245,4 @@ public let snapshotfile: Snapshotfile = .init()
14261
14245
 
14262
14246
  // Please don't remove the lines below
14263
14247
  // They are used to detect outdated files
14264
- // FastlaneRunnerAPIVersion [0.9.209]
14248
+ // FastlaneRunnerAPIVersion [0.9.210]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -399,4 +399,4 @@ public extension GymfileProtocol {
399
399
 
400
400
  // Please don't remove the lines below
401
401
  // They are used to detect outdated files
402
- // FastlaneRunnerAPIVersion [0.9.159]
402
+ // FastlaneRunnerAPIVersion [0.9.160]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -420,4 +420,4 @@ public extension MatchfileProtocol {
420
420
 
421
421
  // Please don't remove the lines below
422
422
  // They are used to detect outdated files
423
- // FastlaneRunnerAPIVersion [0.9.153]
423
+ // FastlaneRunnerAPIVersion [0.9.154]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -84,4 +84,4 @@ public extension PrecheckfileProtocol {
84
84
 
85
85
  // Please don't remove the lines below
86
86
  // They are used to detect outdated files
87
- // FastlaneRunnerAPIVersion [0.9.152]
87
+ // FastlaneRunnerAPIVersion [0.9.153]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -595,4 +595,4 @@ public extension ScanfileProtocol {
595
595
 
596
596
  // Please don't remove the lines below
597
597
  // They are used to detect outdated files
598
- // FastlaneRunnerAPIVersion [0.9.164]
598
+ // FastlaneRunnerAPIVersion [0.9.165]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -161,4 +161,4 @@ public extension ScreengrabfileProtocol {
161
161
 
162
162
  // Please don't remove the lines below
163
163
  // They are used to detect outdated files
164
- // FastlaneRunnerAPIVersion [0.9.154]
164
+ // FastlaneRunnerAPIVersion [0.9.155]
@@ -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.241.0
20
+ // Generated with fastlane 2.241.1
@@ -385,4 +385,4 @@ public extension SnapshotfileProtocol {
385
385
 
386
386
  // Please don't remove the lines below
387
387
  // They are used to detect outdated files
388
- // FastlaneRunnerAPIVersion [0.9.148]
388
+ // FastlaneRunnerAPIVersion [0.9.149]
@@ -1,7 +1,5 @@
1
- require 'ostruct'
2
1
  require 'spaceship'
3
2
  require_relative 'module'
4
- require_relative 'service'
5
3
 
6
4
  module Produce
7
5
  class DeveloperCenter
@@ -88,8 +86,6 @@ module Produce
88
86
  end
89
87
 
90
88
  def create_new_app
91
- return create_new_app_via_connect_api if using_connect_api?
92
-
93
89
  ENV["CREATED_NEW_APP_ID"] = Time.now.to_i.to_s
94
90
  if app_exists?
95
91
  UI.success("[DevCenter] App '#{Produce.config[:app_identifier]}' already exists, nothing to do on the Dev Center")
@@ -122,31 +118,6 @@ module Produce
122
118
  return true
123
119
  end
124
120
 
125
- # App Store Connect API key path — used instead of Spaceship.login.
126
- def create_new_app_via_connect_api
127
- config_enabled_services = Produce.config[:enable_services] || Produce.config[:enabled_features]
128
-
129
- existing = Spaceship::ConnectAPI::BundleId.find(app_identifier)
130
- if existing
131
- UI.success("[DevCenter] App '#{Produce.config[:app_identifier]}' already exists, nothing to do on the Dev Center")
132
- return true
133
- end
134
-
135
- app_name = Produce.config[:app_name]
136
- UI.message("Creating new app '#{app_name}' on the Apple Dev Center")
137
-
138
- connect_api_platform = Spaceship::ConnectAPI::BundleIdPlatform.map(platform)
139
- bundle_id = Spaceship::ConnectAPI::BundleId.create(name: app_name, platform: connect_api_platform, identifier: app_identifier)
140
-
141
- UI.crash!("Something went wrong when creating the new app - it's not listed in the apps list") unless bundle_id
142
-
143
- UI.message("Created app #{bundle_id.id}")
144
- enable_inline_services(config_enabled_services) if config_enabled_services && !config_enabled_services.empty?
145
- UI.success("Finished creating new app '#{app_name}' on the Dev Center")
146
-
147
- return true
148
- end
149
-
150
121
  def enable_services
151
122
  app_service = Spaceship.app_service
152
123
  enabled_clean_options = {}
@@ -190,17 +161,6 @@ module Produce
190
161
 
191
162
  private
192
163
 
193
- # Delegates to Service#update instead of duplicating its ~40-capability mapping.
194
- # Skips any capability explicitly marked "off" — meaningless on a brand-new app.
195
- def enable_inline_services(config_enabled_services)
196
- to_enable = config_enabled_services.reject { |_, v| v == SERVICE_OFF }
197
- return if to_enable.empty?
198
-
199
- options = OpenStruct.new(to_enable)
200
- options.define_singleton_method(:__hash__) { to_enable }
201
- Produce::Service.new.update(true, options)
202
- end
203
-
204
164
  def platform
205
165
  # This was added to support creation of multiple platforms
206
166
  # Produce::ItunesConnect can take an array of platforms to create for App Store Connect
@@ -214,16 +174,9 @@ module Produce
214
174
  Spaceship.app.find(app_identifier, mac: platform == "osx") != nil
215
175
  end
216
176
 
217
- def using_connect_api?
218
- !connect_api_token.nil?
219
- end
220
-
221
- def connect_api_token
222
- Spaceship::ConnectAPI::Token.from(hash: Produce.config[:api_key], filepath: Produce.config[:api_key_path])
223
- end
224
-
225
177
  def login
226
- Produce.authenticate_connect_api!
178
+ Spaceship.login(Produce.config[:username], nil)
179
+ Spaceship.select_team
227
180
  end
228
181
  end
229
182
  end
@@ -1,5 +1,4 @@
1
1
  require 'fastlane_core/helper'
2
- require 'spaceship'
3
2
 
4
3
  module Produce
5
4
  class << self
@@ -12,24 +11,4 @@ module Produce
12
11
 
13
12
  ENV['FASTLANE_TEAM_ID'] ||= ENV["PRODUCE_TEAM_ID"]
14
13
  ENV['DELIVER_USER'] ||= ENV["PRODUCE_USERNAME"]
15
-
16
- # Shared by DeveloperCenter#login and Service#bundle_id. Prefers a configured API key, falls
17
- # back to a token already set by another lane (e.g. app_store_connect_api_key), then falls
18
- # back to username-based session login.
19
- def self.authenticate_connect_api!
20
- if (token = Spaceship::ConnectAPI::Token.from(hash: Produce.config[:api_key], filepath: Produce.config[:api_key_path]))
21
- UI.message("Authenticating with App Store Connect API Key")
22
-
23
- # `current_team_id:` avoids a live, session-based team_id lookup elsewhere in
24
- # ConnectAPI's provisioning client, which has no session to use here.
25
- Spaceship::ConnectAPI.client = Spaceship::ConnectAPI::Client.new(token: token, current_team_id: Produce.config[:team_id])
26
- elsif !Spaceship::ConnectAPI.token.nil?
27
- UI.message("Using existing authorization token for App Store Connect API")
28
- else
29
- UI.message("Starting login with user '#{Produce.config[:username]}'")
30
- Spaceship.login(Produce.config[:username], nil)
31
- Spaceship.select_team
32
- UI.message("Successfully logged in")
33
- end
34
- end
35
14
  end
@@ -17,23 +17,6 @@ module Produce
17
17
  code_gen_sensitive: true,
18
18
  default_value: user,
19
19
  default_value_dynamic: true),
20
-
21
- # App Store Connect API
22
- FastlaneCore::ConfigItem.new(key: :api_key_path,
23
- env_names: ["PRODUCE_API_KEY_PATH", "APP_STORE_CONNECT_API_KEY_PATH"],
24
- description: "Path to your App Store Connect API Key JSON file (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-json-file)",
25
- optional: true,
26
- conflicting_options: [:api_key],
27
- verify_block: proc do |value|
28
- UI.user_error!("Couldn't find API key JSON file at path '#{value}'") unless File.exist?(value)
29
- end),
30
- FastlaneCore::ConfigItem.new(key: :api_key,
31
- env_names: ["PRODUCE_API_KEY", "APP_STORE_CONNECT_API_KEY"],
32
- description: "Your App Store Connect API Key information (https://docs.fastlane.tools/app-store-connect-api/#using-fastlane-api-key-hash-option)",
33
- type: Hash,
34
- optional: true,
35
- sensitive: true,
36
- conflicting_options: [:api_key_path]),
37
20
  FastlaneCore::ConfigItem.new(key: :app_identifier,
38
21
  env_name: "PRODUCE_APP_IDENTIFIER",
39
22
  short_option: "-a",
@@ -419,9 +419,10 @@ module Produce
419
419
 
420
420
  def bundle_id
421
421
  return @bundle_id if @bundle_id
422
-
423
- Produce.authenticate_connect_api!
424
-
422
+ UI.message("Starting login with user '#{Produce.config[:username]}'")
423
+ Spaceship.login(Produce.config[:username], nil)
424
+ Spaceship.select_team
425
+ UI.message("Successfully logged in")
425
426
  @bundle_id ||= Spaceship::ConnectAPI::BundleId.find(Produce.config[:app_identifier].to_s)
426
427
  end
427
428
  end
@@ -84,6 +84,8 @@ module Snapshot
84
84
  {
85
85
  # snapshot in Xcode 9 saves screenshots with the SIMULATOR_DEVICE_NAME
86
86
  # which includes spaces
87
+ 'iPhone 18 Pro Max' => "iPhone 18 Pro Max",
88
+ 'iPhone 18 Pro' => "iPhone 18 Pro",
87
89
  'iPhone 17 Pro Max' => "iPhone 17 Pro Max",
88
90
  'iPhone 17 Pro' => "iPhone 17 Pro",
89
91
  'iPhone 17' => "iPhone 17",
@@ -19,6 +19,7 @@ module Spaceship
19
19
  APP_IPHONE_61 = "APP_IPHONE_61"
20
20
  APP_IPHONE_65 = "APP_IPHONE_65"
21
21
  APP_IPHONE_67 = "APP_IPHONE_67"
22
+ APP_IPHONE_DUO = "APP_IPHONE_DUO"
22
23
 
23
24
  APP_IPAD_97 = "APP_IPAD_97"
24
25
  APP_IPAD_105 = "APP_IPAD_105"
@@ -77,6 +78,7 @@ module Spaceship
77
78
  APP_IPHONE_61,
78
79
  APP_IPHONE_65,
79
80
  APP_IPHONE_67,
81
+ APP_IPHONE_DUO,
80
82
 
81
83
  APP_IPAD_97,
82
84
  APP_IPAD_105,
@@ -81,23 +81,12 @@ module Spaceship
81
81
  return resp.to_models.first
82
82
  end
83
83
 
84
- # `patch_bundle_id_capability` patches the wrong resource (bundleIds, with
85
- # attributes nested inside a relationship's `data` entry) — invalid JSON:API,
86
- # rejected by Apple. This uses the real per-capability endpoints instead:
87
- # create to enable, PATCH to update settings, delete to disable.
88
84
  def update_capability(capability_type, enabled: false, settings: [], client: nil)
89
85
  raise "capability_type is required " if capability_type.nil?
90
86
 
91
87
  client ||= Spaceship::ConnectAPI
92
- existing = get_capabilities(client: client).find { |capability| capability.is_type?(capability_type) }
93
-
94
- if enabled
95
- return create_capability(capability_type, settings: settings, client: client) unless existing
96
- return existing.update!(client: client, settings: settings)
97
- else
98
- existing&.delete!(client: client)
99
- return nil
100
- end
88
+ resp = client.patch_bundle_id_capability(bundle_id_id: id, seed_id: seed_id, enabled: enabled, capability_type: capability_type, settings: settings)
89
+ return resp.to_models.first
101
90
  end
102
91
  end
103
92
  end
@@ -133,12 +133,6 @@ module Spaceship
133
133
  client ||= Spaceship::ConnectAPI
134
134
  client.delete_bundle_id_capability(bundle_id_capability_id: id)
135
135
  end
136
-
137
- def update!(client: nil, enabled: true, settings: [])
138
- client ||= Spaceship::ConnectAPI
139
- resp = client.patch_bundle_id_capability_configuration(bundle_id_capability_id: id, enabled: enabled, settings: settings)
140
- return resp.to_models.first
141
- end
142
136
  end
143
137
  end
144
138
  end
@@ -89,22 +89,6 @@ module Spaceship
89
89
  provisioning_request_client.post("#{Version::V1}/bundleIdCapabilities", body)
90
90
  end
91
91
 
92
- # Modify a Capability Configuration — patches the bundleIdCapability resource
93
- # directly (attributes at the top level), not the bundleId it belongs to.
94
- def patch_bundle_id_capability_configuration(bundle_id_capability_id:, enabled: false, settings: [])
95
- body = {
96
- data: {
97
- type: "bundleIdCapabilities",
98
- id: bundle_id_capability_id,
99
- attributes: {
100
- enabled: enabled,
101
- settings: settings
102
- }
103
- }
104
- }
105
- provisioning_request_client.patch("#{Version::V1}/bundleIdCapabilities/#{bundle_id_capability_id}", body)
106
- end
107
-
108
92
  def patch_bundle_id_capability(bundle_id_id:, seed_id:, enabled: false, capability_type:, settings: [])
109
93
  body = {
110
94
  data: {
metadata CHANGED
@@ -1,36 +1,36 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.241.0
4
+ version: 2.241.1
5
5
  platform: ruby
6
6
  authors:
7
- - Maksym Grebenets
8
- - Manu Wallner
9
- - Jan Piotrowski
10
- - Fumiya Nakamura
11
- - Satoshi Namai
7
+ - Felix Krause
12
8
  - Jimmy Dee
13
- - Matthew Ellis
14
- - Max Ott
15
- - Łukasz Grabowski
16
- - Iulian Onofrei
17
- - Olivier Halligon
18
- - Jérôme Lacoste
19
- - Helmut Januschka
9
+ - Connor Tumbleson
10
+ - Manish Rathi
20
11
  - Daniel Jankowski
21
- - Andrew McBurney
22
- - Jorge Revuelta H
23
- - Aaron Brager
12
+ - Kohki Miki
24
13
  - Josh Holtz
25
- - Connor Tumbleson
14
+ - Manu Wallner
26
15
  - Stefan Natchev
16
+ - Olivier Halligon
17
+ - Max Ott
18
+ - Helmut Januschka
27
19
  - Luka Mirosevic
28
- - Manish Rathi
20
+ - Satoshi Namai
29
21
  - Roger Oba
30
- - Kohki Miki
31
- - Felix Krause
32
- - Joshua Liebowitz
33
22
  - Danielle Tomlinson
23
+ - Andrew McBurney
24
+ - Iulian Onofrei
25
+ - Aaron Brager
26
+ - Jan Piotrowski
27
+ - Jérôme Lacoste
28
+ - Jorge Revuelta H
29
+ - Maksym Grebenets
30
+ - Joshua Liebowitz
31
+ - Fumiya Nakamura
32
+ - Łukasz Grabowski
33
+ - Matthew Ellis
34
34
  bindir: bin
35
35
  cert_chain: []
36
36
  date: 1980-01-02 00:00:00.000000000 Z