fastlane 2.183.2 → 2.184.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 (72) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +88 -88
  3. data/cert/lib/cert/runner.rb +3 -7
  4. data/deliver/lib/deliver/commands_generator.rb +1 -1
  5. data/deliver/lib/deliver/detect_values.rb +5 -3
  6. data/deliver/lib/deliver/download_screenshots.rb +1 -1
  7. data/deliver/lib/deliver/html_generator.rb +2 -2
  8. data/deliver/lib/deliver/module.rb +6 -0
  9. data/deliver/lib/deliver/options.rb +36 -51
  10. data/deliver/lib/deliver/runner.rb +8 -11
  11. data/deliver/lib/deliver/setup.rb +1 -1
  12. data/deliver/lib/deliver/submit_for_review.rb +1 -1
  13. data/deliver/lib/deliver/upload_metadata.rb +19 -5
  14. data/deliver/lib/deliver/upload_price_tier.rb +1 -1
  15. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  16. data/fastlane/lib/fastlane/actions/app_store_build_number.rb +7 -11
  17. data/fastlane/lib/fastlane/actions/app_store_connect_api_key.rb +12 -2
  18. data/fastlane/lib/fastlane/actions/check_app_store_metadata.rb +5 -1
  19. data/fastlane/lib/fastlane/actions/docs/upload_to_app_store.md.erb +32 -12
  20. data/fastlane/lib/fastlane/actions/get_certificates.rb +5 -1
  21. data/fastlane/lib/fastlane/actions/get_provisioning_profile.rb +5 -1
  22. data/fastlane/lib/fastlane/actions/register_device.rb +7 -10
  23. data/fastlane/lib/fastlane/actions/register_devices.rb +7 -10
  24. data/fastlane/lib/fastlane/actions/set_changelog.rb +7 -10
  25. data/fastlane/lib/fastlane/actions/swiftlint.rb +16 -4
  26. data/fastlane/lib/fastlane/actions/sync_code_signing.rb +6 -1
  27. data/fastlane/lib/fastlane/actions/upload_to_app_store.rb +5 -1
  28. data/fastlane/lib/fastlane/actions/upload_to_testflight.rb +2 -1
  29. data/fastlane/lib/fastlane/swift_fastlane_function.rb +6 -4
  30. data/fastlane/lib/fastlane/version.rb +1 -1
  31. data/fastlane/swift/Deliverfile.swift +1 -1
  32. data/fastlane/swift/DeliverfileProtocol.swift +20 -20
  33. data/fastlane/swift/Fastlane.swift +462 -240
  34. data/fastlane/swift/Gymfile.swift +1 -1
  35. data/fastlane/swift/GymfileProtocol.swift +1 -1
  36. data/fastlane/swift/Matchfile.swift +1 -1
  37. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  38. data/fastlane/swift/OptionalConfigValue.swift +2 -32
  39. data/fastlane/swift/Precheckfile.swift +1 -1
  40. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  41. data/fastlane/swift/Scanfile.swift +1 -1
  42. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  43. data/fastlane/swift/Screengrabfile.swift +1 -1
  44. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  45. data/fastlane/swift/Snapshotfile.swift +1 -1
  46. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  47. data/fastlane/swift/formatting/Brewfile.lock.json +2 -2
  48. data/fastlane_core/lib/fastlane_core/build_watcher.rb +24 -1
  49. data/fastlane_core/lib/fastlane_core/configuration/commander_generator.rb +5 -0
  50. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +2 -0
  51. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +1 -1
  52. data/match/lib/match/importer.rb +6 -10
  53. data/match/lib/match/migrate.rb +2 -3
  54. data/match/lib/match/nuke.rb +3 -7
  55. data/match/lib/match/runner.rb +2 -3
  56. data/match/lib/match/spaceship_ensure.rb +3 -0
  57. data/match/lib/match/storage/google_cloud_storage.rb +2 -2
  58. data/match/lib/match/storage/s3_storage.rb +2 -2
  59. data/pilot/lib/pilot/build_manager.rb +2 -0
  60. data/pilot/lib/pilot/manager.rb +3 -7
  61. data/pilot/lib/pilot/options.rb +8 -0
  62. data/precheck/lib/precheck/runner.rb +8 -7
  63. data/sigh/lib/assets/resign.sh +77 -46
  64. data/sigh/lib/sigh/download_all.rb +4 -8
  65. data/sigh/lib/sigh/runner.rb +4 -8
  66. data/spaceship/lib/spaceship/connect_api/models/.age_rating_declaration.rb.swp +0 -0
  67. data/spaceship/lib/spaceship/connect_api/models/age_rating_declaration.rb +35 -4
  68. data/spaceship/lib/spaceship/connect_api/models/app_info.rb +10 -0
  69. data/spaceship/lib/spaceship/connect_api/models/app_store_version.rb +2 -3
  70. data/spaceship/lib/spaceship/connect_api/token.rb +6 -0
  71. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +4 -2
  72. metadata +19 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 91091b73b5075becf27af52eba1ba844a3406566e0cc55a9d2523a681774a941
4
- data.tar.gz: 98d9e99014df4df5f214dc0c0eab69a4e02ba5f215ee210e8ab1159a864a3fd8
3
+ metadata.gz: c8a9d0fade7d8368a2ece893d0142c9b22d103b890653d286e7c08de844016ac
4
+ data.tar.gz: c61acc200330d009626673188948f3c554afcfabecb8ba45e91bd9b697a636ec
5
5
  SHA512:
6
- metadata.gz: c719ed7ebdfb81943c5043771153503bd82cf7c7589e3af9f343ab0ec250ccce4094fad9f11508c5c5f3e610463729e72de15ee94defe51a54ec804579c4a85f
7
- data.tar.gz: 70cbba33ce7cbc3c38574ea07709084d9824b08b5f697fe99bf43b3d874b8b567625410daf753d1c47f846fd19c239fa018b98f93e08421a29befacf97b39986
6
+ metadata.gz: a24b27118a95a7b1c36cbc0710b7bcf9357d52d4c362805ee9e4f84574c7dae49cf09fc4abd6286054a4b330c67a23e1ea349e47e1d27ba6eba3dcd9e9319b82
7
+ data.tar.gz: 006fd0a41af019175f59dd1a1571611a0255f32c45bdc6a5bebe0fbfc3191b5163981a87b12bd77e38f659406b3687ad15cb8ae9945c7e8d46fc2bb4bc4de562
data/README.md CHANGED
@@ -35,70 +35,76 @@ 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='max-ott'>
39
- <a href='https://github.com/max-ott'>
40
- <img src='https://github.com/max-ott.png?size=140'>
38
+ <td id='iulian-onofrei'>
39
+ <a href='https://github.com/revolter'>
40
+ <img src='https://github.com/revolter.png?size=140'>
41
41
  </a>
42
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
42
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
43
43
  </td>
44
- <td id='luka-mirosevic'>
45
- <a href='https://github.com/lmirosevic'>
46
- <img src='https://github.com/lmirosevic.png?size=140'>
44
+ <td id='jimmy-dee'>
45
+ <a href='https://github.com/jdee'>
46
+ <img src='https://github.com/jdee.png?size=140'>
47
47
  </a>
48
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
48
+ <h4 align='center'>Jimmy Dee</h4>
49
49
  </td>
50
- <td id='daniel-jankowski'>
51
- <a href='https://github.com/mollyIV'>
52
- <img src='https://github.com/mollyIV.png?size=140'>
50
+ <td id='kohki-miki'>
51
+ <a href='https://github.com/giginet'>
52
+ <img src='https://github.com/giginet.png?size=140'>
53
53
  </a>
54
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
55
55
  </td>
56
- <td id='matthew-ellis'>
57
- <a href='https://github.com/matthewellis'>
58
- <img src='https://github.com/matthewellis.png?size=140'>
56
+ <td id='josh-holtz'>
57
+ <a href='https://github.com/joshdholtz'>
58
+ <img src='https://github.com/joshdholtz.png?size=140'>
59
59
  </a>
60
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
60
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
61
61
  </td>
62
- <td id='jorge-revuelta-h'>
63
- <a href='https://github.com/minuscorp'>
64
- <img src='https://github.com/minuscorp.png?size=140'>
62
+ <td id='aaron-brager'>
63
+ <a href='https://github.com/getaaron'>
64
+ <img src='https://github.com/getaaron.png?size=140'>
65
65
  </a>
66
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
66
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
67
67
  </td>
68
68
  </tr>
69
69
  <tr>
70
- <td id='jan-piotrowski'>
71
- <a href='https://github.com/janpio'>
72
- <img src='https://github.com/janpio.png?size=140'>
70
+ <td id='stefan-natchev'>
71
+ <a href='https://github.com/snatchev'>
72
+ <img src='https://github.com/snatchev.png?size=140'>
73
73
  </a>
74
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
74
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
75
75
  </td>
76
- <td id='maksym-grebenets'>
77
- <a href='https://github.com/mgrebenets'>
78
- <img src='https://github.com/mgrebenets.png?size=140'>
76
+ <td id='manu-wallner'>
77
+ <a href='https://github.com/milch'>
78
+ <img src='https://github.com/milch.png?size=140'>
79
79
  </a>
80
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
80
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
81
81
  </td>
82
- <td id='helmut-januschka'>
83
- <a href='https://github.com/hjanuschka'>
84
- <img src='https://github.com/hjanuschka.png?size=140'>
82
+ <td id='jorge-revuelta-h'>
83
+ <a href='https://github.com/minuscorp'>
84
+ <img src='https://github.com/minuscorp.png?size=140'>
85
85
  </a>
86
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
86
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
87
87
  </td>
88
- <td id='olivier-halligon'>
89
- <a href='https://github.com/AliSoftware'>
90
- <img src='https://github.com/AliSoftware.png?size=140'>
88
+ <td id='satoshi-namai'>
89
+ <a href='https://github.com/ainame'>
90
+ <img src='https://github.com/ainame.png?size=140'>
91
91
  </a>
92
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
92
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
93
+ </td>
94
+ <td id='jan-piotrowski'>
95
+ <a href='https://github.com/janpio'>
96
+ <img src='https://github.com/janpio.png?size=140'>
97
+ </a>
98
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
93
99
  </td>
100
+ </tr>
101
+ <tr>
94
102
  <td id='felix-krause'>
95
103
  <a href='https://github.com/KrauseFx'>
96
104
  <img src='https://github.com/KrauseFx.png?size=140'>
97
105
  </a>
98
106
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
99
107
  </td>
100
- </tr>
101
- <tr>
102
108
  <td id='fumiya-nakamura'>
103
109
  <a href='https://github.com/nafu'>
104
110
  <img src='https://github.com/nafu.png?size=140'>
@@ -111,63 +117,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
111
117
  </a>
112
118
  <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
113
119
  </td>
114
- <td id='iulian-onofrei'>
115
- <a href='https://github.com/revolter'>
116
- <img src='https://github.com/revolter.png?size=140'>
117
- </a>
118
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
119
- </td>
120
- <td id='jérôme-lacoste'>
121
- <a href='https://github.com/lacostej'>
122
- <img src='https://github.com/lacostej.png?size=140'>
120
+ <td id='luka-mirosevic'>
121
+ <a href='https://github.com/lmirosevic'>
122
+ <img src='https://github.com/lmirosevic.png?size=140'>
123
123
  </a>
124
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
125
125
  </td>
126
- <td id='roger-oba'>
127
- <a href='https://github.com/rogerluan'>
128
- <img src='https://github.com/rogerluan.png?size=140'>
126
+ <td id='olivier-halligon'>
127
+ <a href='https://github.com/AliSoftware'>
128
+ <img src='https://github.com/AliSoftware.png?size=140'>
129
129
  </a>
130
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
130
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
131
131
  </td>
132
132
  </tr>
133
133
  <tr>
134
- <td id='satoshi-namai'>
135
- <a href='https://github.com/ainame'>
136
- <img src='https://github.com/ainame.png?size=140'>
137
- </a>
138
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
139
- </td>
140
- <td id='manu-wallner'>
141
- <a href='https://github.com/milch'>
142
- <img src='https://github.com/milch.png?size=140'>
143
- </a>
144
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
145
- </td>
146
- <td id='stefan-natchev'>
147
- <a href='https://github.com/snatchev'>
148
- <img src='https://github.com/snatchev.png?size=140'>
149
- </a>
150
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
151
- </td>
152
134
  <td id='danielle-tomlinson'>
153
135
  <a href='https://github.com/endocrimes'>
154
136
  <img src='https://github.com/endocrimes.png?size=140'>
155
137
  </a>
156
138
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
157
139
  </td>
158
- <td id='josh-holtz'>
159
- <a href='https://github.com/joshdholtz'>
160
- <img src='https://github.com/joshdholtz.png?size=140'>
140
+ <td id='max-ott'>
141
+ <a href='https://github.com/max-ott'>
142
+ <img src='https://github.com/max-ott.png?size=140'>
161
143
  </a>
162
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
163
145
  </td>
164
- </tr>
165
- <tr>
166
- <td id='jimmy-dee'>
167
- <a href='https://github.com/jdee'>
168
- <img src='https://github.com/jdee.png?size=140'>
146
+ <td id='matthew-ellis'>
147
+ <a href='https://github.com/matthewellis'>
148
+ <img src='https://github.com/matthewellis.png?size=140'>
169
149
  </a>
170
- <h4 align='center'>Jimmy Dee</h4>
150
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
171
151
  </td>
172
152
  <td id='joshua-liebowitz'>
173
153
  <a href='https://github.com/taquitos'>
@@ -175,17 +155,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
175
155
  </a>
176
156
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
177
157
  </td>
178
- <td id='kohki-miki'>
179
- <a href='https://github.com/giginet'>
180
- <img src='https://github.com/giginet.png?size=140'>
158
+ <td id='daniel-jankowski'>
159
+ <a href='https://github.com/mollyIV'>
160
+ <img src='https://github.com/mollyIV.png?size=140'>
181
161
  </a>
182
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
183
163
  </td>
184
- <td id='aaron-brager'>
185
- <a href='https://github.com/getaaron'>
186
- <img src='https://github.com/getaaron.png?size=140'>
164
+ </tr>
165
+ <tr>
166
+ <td id='roger-oba'>
167
+ <a href='https://github.com/rogerluan'>
168
+ <img src='https://github.com/rogerluan.png?size=140'>
187
169
  </a>
188
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
170
+ <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
171
+ </td>
172
+ <td id='maksym-grebenets'>
173
+ <a href='https://github.com/mgrebenets'>
174
+ <img src='https://github.com/mgrebenets.png?size=140'>
175
+ </a>
176
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
177
+ </td>
178
+ <td id='helmut-januschka'>
179
+ <a href='https://github.com/hjanuschka'>
180
+ <img src='https://github.com/hjanuschka.png?size=140'>
181
+ </a>
182
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
183
+ </td>
184
+ <td id='jérôme-lacoste'>
185
+ <a href='https://github.com/lacostej'>
186
+ <img src='https://github.com/lacostej.png?size=140'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
189
189
  </td>
190
190
  </table>
191
191
 
@@ -20,9 +20,11 @@ module Cert
20
20
  end
21
21
 
22
22
  def login
23
- if api_token
23
+ if (api_token = Spaceship::ConnectAPI::Token.from(hash: Cert.config[:api_key], filepath: Cert.config[:api_key_path]))
24
24
  UI.message("Creating authorization token for App Store Connect API")
25
25
  Spaceship::ConnectAPI.token = api_token
26
+ elsif !Spaceship::ConnectAPI.token.nil?
27
+ UI.message("Using existing authorization token for App Store Connect API")
26
28
  else
27
29
  # Username is now optional since addition of App Store Connect API Key
28
30
  # Force asking for username to prompt user if not already set
@@ -34,12 +36,6 @@ module Cert
34
36
  end
35
37
  end
36
38
 
37
- def api_token
38
- @api_token ||= Spaceship::ConnectAPI::Token.create(**Cert.config[:api_key]) if Cert.config[:api_key]
39
- @api_token ||= Spaceship::ConnectAPI::Token.from_json_file(Cert.config[:api_key_path]) if Cert.config[:api_key_path]
40
- return @api_token
41
- end
42
-
43
39
  def run
44
40
  FileUtils.mkdir_p(Cert.config[:output_path])
45
41
 
@@ -168,7 +168,7 @@ module Deliver
168
168
  return 0 unless res
169
169
 
170
170
  require 'deliver/setup'
171
- app = options[:app]
171
+ app = Deliver.cache[:app]
172
172
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
173
173
  v = app.get_latest_app_store_version(platform: platform)
174
174
  if options[:app_version].to_s.length > 0
@@ -10,6 +10,8 @@ require_relative 'languages'
10
10
  module Deliver
11
11
  class DetectValues
12
12
  def run!(options, skip_params = {})
13
+ Deliver.cache = {}
14
+
13
15
  find_platform(options)
14
16
  find_app_identifier(options)
15
17
  find_app(options)
@@ -46,9 +48,9 @@ module Deliver
46
48
  app = Spaceship::ConnectAPI::App.get(app_id: app_id)
47
49
  end
48
50
 
49
- if app
50
- options[:app] = app
51
- else
51
+ Deliver.cache[:app] = app
52
+
53
+ unless app
52
54
  UI.user_error!("Could not find app with app identifier '#{options[:app_identifier]}' in your App Store Connect account (#{options[:username]} - Team: #{Spaceship::Tunes.client.team_id})")
53
55
  end
54
56
  end
@@ -13,7 +13,7 @@ module Deliver
13
13
  end
14
14
 
15
15
  def self.download(options, folder_path)
16
- app = options[:app]
16
+ app = Deliver.cache[:app]
17
17
 
18
18
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
19
19
  if options[:use_live_version]
@@ -50,12 +50,12 @@ module Deliver
50
50
  @export_path = export_path
51
51
 
52
52
  @app_name = (options[:name]['en-US'] || options[:name].values.first) if options[:name]
53
- @app_name ||= options[:app].name
53
+ @app_name ||= Deliver.cache[:app].name
54
54
 
55
55
  @languages = options[:description].keys if options[:description]
56
56
  @languages ||= begin
57
57
  platform = Spaceship::ConnectAPI::Platform.map(options[:platform])
58
- version = options[:app].get_edit_app_store_version(platform: platform)
58
+ version = Deliver.cache[:app].get_edit_app_store_version(platform: platform)
59
59
 
60
60
  version.get_app_store_version_localizations.collect(&:locale)
61
61
  end
@@ -4,6 +4,12 @@ require 'fastlane/boolean'
4
4
 
5
5
  module Deliver
6
6
  class << self
7
+ attr_accessor :cache
8
+
9
+ def cache
10
+ @cache ||= {}
11
+ @cache
12
+ end
7
13
  end
8
14
 
9
15
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
@@ -109,11 +109,11 @@ module Deliver
109
109
  default_value: false,
110
110
  env_name: "DELIVER_EDIT_LIVE",
111
111
  description: "Modify live metadata, this option disables ipa upload and screenshot upload",
112
- is_string: false),
112
+ type: Boolean),
113
113
  FastlaneCore::ConfigItem.new(key: :use_live_version,
114
114
  env_name: "DELIVER_USE_LIVE_VERSION",
115
115
  description: "Force usage of live version rather than edit version",
116
- is_string: false,
116
+ type: Boolean,
117
117
  default_value: false),
118
118
 
119
119
  # paths
@@ -132,22 +132,22 @@ module Deliver
132
132
  FastlaneCore::ConfigItem.new(key: :skip_binary_upload,
133
133
  env_name: "DELIVER_SKIP_BINARY_UPLOAD",
134
134
  description: "Skip uploading an ipa or pkg to App Store Connect",
135
- is_string: false,
135
+ type: Boolean,
136
136
  default_value: false),
137
137
  FastlaneCore::ConfigItem.new(key: :skip_screenshots,
138
138
  env_name: "DELIVER_SKIP_SCREENSHOTS",
139
139
  description: "Don't upload the screenshots",
140
- is_string: false,
140
+ type: Boolean,
141
141
  default_value: false),
142
142
  FastlaneCore::ConfigItem.new(key: :skip_metadata,
143
143
  env_name: "DELIVER_SKIP_METADATA",
144
144
  description: "Don't upload the metadata (e.g. title, description). This will still upload screenshots",
145
- is_string: false,
145
+ type: Boolean,
146
146
  default_value: false),
147
147
  FastlaneCore::ConfigItem.new(key: :skip_app_version_update,
148
148
  env_name: "DELIVER_SKIP_APP_VERSION_UPDATE",
149
149
  description: "Don’t create or update the app version that is being prepared for submission",
150
- is_string: false,
150
+ type: Boolean,
151
151
  default_value: false),
152
152
 
153
153
  # how to operate
@@ -155,22 +155,22 @@ module Deliver
155
155
  short_option: "-f",
156
156
  env_name: "DELIVER_FORCE",
157
157
  description: "Skip verification of HTML preview file",
158
- is_string: false,
158
+ type: Boolean,
159
159
  default_value: false),
160
160
  FastlaneCore::ConfigItem.new(key: :overwrite_screenshots,
161
161
  env_name: "DELIVER_OVERWRITE_SCREENSHOTS",
162
162
  description: "Clear all previously uploaded screenshots before uploading the new ones",
163
- is_string: false,
163
+ type: Boolean,
164
164
  default_value: false),
165
165
  FastlaneCore::ConfigItem.new(key: :submit_for_review,
166
166
  env_name: "DELIVER_SUBMIT_FOR_REVIEW",
167
167
  description: "Submit the new version for Review after uploading everything",
168
- is_string: false,
168
+ type: Boolean,
169
169
  default_value: false),
170
170
  FastlaneCore::ConfigItem.new(key: :reject_if_possible,
171
171
  env_name: "DELIVER_REJECT_IF_POSSIBLE",
172
172
  description: "Rejects the previously submitted build if it's in a state where it's possible",
173
- is_string: false,
173
+ type: Boolean,
174
174
  default_value: false),
175
175
 
176
176
  # release
@@ -198,13 +198,13 @@ module Deliver
198
198
  env_name: "DELIVER_PHASED_RELEASE",
199
199
  description: "Enable the phased release feature of iTC",
200
200
  optional: true,
201
- is_string: false,
201
+ type: Boolean,
202
202
  default_value: false),
203
203
  FastlaneCore::ConfigItem.new(key: :reset_ratings,
204
204
  env_name: "DELIVER_RESET_RATINGS",
205
205
  description: "Reset the summary rating when you release a new version of the application",
206
206
  optional: true,
207
- is_string: false,
207
+ type: Boolean,
208
208
  default_value: false),
209
209
 
210
210
  # other app configuration
@@ -212,13 +212,12 @@ module Deliver
212
212
  short_option: "-r",
213
213
  env_name: "DELIVER_PRICE_TIER",
214
214
  description: "The price tier of this application",
215
- is_string: false,
215
+ type: Integer,
216
216
  optional: true),
217
217
  FastlaneCore::ConfigItem.new(key: :app_rating_config_path,
218
218
  short_option: "-g",
219
219
  env_name: "DELIVER_APP_RATING_CONFIG_PATH",
220
220
  description: "Path to the app rating's config",
221
- is_string: true,
222
221
  optional: true,
223
222
  verify_block: proc do |value|
224
223
  UI.user_error!("Could not find config file at path '#{File.expand_path(value)}'") unless File.exist?(value)
@@ -227,7 +226,6 @@ module Deliver
227
226
  FastlaneCore::ConfigItem.new(key: :submission_information,
228
227
  short_option: "-b",
229
228
  description: "Extra information for the submission (e.g. compliance specifications, IDFA settings)",
230
- is_string: false,
231
229
  type: Hash,
232
230
  optional: true),
233
231
 
@@ -237,7 +235,7 @@ module Deliver
237
235
  env_name: "DELIVER_TEAM_ID",
238
236
  description: "The ID of your App Store Connect team if you're in multiple teams",
239
237
  optional: true,
240
- is_string: false, # as we also allow integers, which we convert to strings anyway
238
+ skip_type_validation: true, # as we also allow integers, which we convert to strings anyway
241
239
  code_gen_sensitive: true,
242
240
  default_value: CredentialsManager::AppfileConfig.try_fetch_value(:itc_team_id),
243
241
  default_value_dynamic: true,
@@ -260,7 +258,6 @@ module Deliver
260
258
  env_name: "DELIVER_DEV_PORTAL_TEAM_ID",
261
259
  description: "The short ID of your Developer Portal team, if you're in multiple teams. Different from your iTC team ID!",
262
260
  optional: true,
263
- is_string: true,
264
261
  code_gen_sensitive: true,
265
262
  default_value: CredentialsManager::AppfileConfig.try_fetch_value(:team_id),
266
263
  default_value_dynamic: true,
@@ -293,13 +290,13 @@ module Deliver
293
290
  short_option: "-x",
294
291
  env_name: "DELIVER_RUN_PRECHECK_BEFORE_SUBMIT",
295
292
  description: "Run precheck before submitting to app review",
296
- is_string: false,
293
+ type: Boolean,
297
294
  default_value: true),
298
295
  FastlaneCore::ConfigItem.new(key: :precheck_default_rule_level,
299
296
  short_option: "-d",
300
297
  env_name: "DELIVER_PRECHECK_DEFAULT_RULE_LEVEL",
301
298
  description: "The default precheck rule level unless otherwise configured",
302
- is_string: false,
299
+ type: Symbol,
303
300
  default_value: :warn),
304
301
 
305
302
  # App Metadata
@@ -307,7 +304,6 @@ module Deliver
307
304
  env_name: "DELIVER_INDIVUDAL_METADATA_ITEMS",
308
305
  description: "An array of localized metadata items to upload individually by language so that errors can be identified. E.g. ['name', 'keywords', 'description']. Note: slow",
309
306
  deprecated: "Removed after the migration to the new App Store Connect API in June 2020",
310
- is_string: false,
311
307
  type: Array,
312
308
  optional: true),
313
309
 
@@ -327,66 +323,56 @@ module Deliver
327
323
  FastlaneCore::ConfigItem.new(key: :copyright,
328
324
  env_name: "DELIVER_COPYRIGHT",
329
325
  description: "Metadata: The copyright notice",
330
- optional: true,
331
- is_string: true),
326
+ optional: true),
332
327
  FastlaneCore::ConfigItem.new(key: :primary_category,
333
328
  env_name: "DELIVER_PRIMARY_CATEGORY",
334
329
  description: "Metadata: The english name of the primary category (e.g. `Business`, `Books`)",
335
- optional: true,
336
- is_string: true),
330
+ optional: true),
337
331
  FastlaneCore::ConfigItem.new(key: :secondary_category,
338
332
  env_name: "DELIVER_SECONDARY_CATEGORY",
339
333
  description: "Metadata: The english name of the secondary category (e.g. `Business`, `Books`)",
340
- optional: true,
341
- is_string: true),
334
+ optional: true),
342
335
  FastlaneCore::ConfigItem.new(key: :primary_first_sub_category,
343
336
  env_name: "DELIVER_PRIMARY_FIRST_SUB_CATEGORY",
344
337
  description: "Metadata: The english name of the primary first sub category (e.g. `Educational`, `Puzzle`)",
345
- optional: true,
346
- is_string: true),
338
+ optional: true),
347
339
  FastlaneCore::ConfigItem.new(key: :primary_second_sub_category,
348
340
  env_name: "DELIVER_PRIMARY_SECOND_SUB_CATEGORY",
349
341
  description: "Metadata: The english name of the primary second sub category (e.g. `Educational`, `Puzzle`)",
350
- optional: true,
351
- is_string: true),
342
+ optional: true),
352
343
  FastlaneCore::ConfigItem.new(key: :secondary_first_sub_category,
353
344
  env_name: "DELIVER_SECONDARY_FIRST_SUB_CATEGORY",
354
345
  description: "Metadata: The english name of the secondary first sub category (e.g. `Educational`, `Puzzle`)",
355
- optional: true,
356
- is_string: true),
346
+ optional: true),
357
347
  FastlaneCore::ConfigItem.new(key: :secondary_second_sub_category,
358
348
  env_name: "DELIVER_SECONDARY_SECOND_SUB_CATEGORY",
359
349
  description: "Metadata: The english name of the secondary second sub category (e.g. `Educational`, `Puzzle`)",
360
- optional: true,
361
- is_string: true),
350
+ optional: true),
362
351
  FastlaneCore::ConfigItem.new(key: :trade_representative_contact_information,
363
352
  description: "Metadata: A hash containing the trade representative contact information",
364
353
  optional: true,
365
- is_string: false,
354
+ deprecated: "This is no longer used by App Store Connect",
366
355
  type: Hash),
367
356
  FastlaneCore::ConfigItem.new(key: :app_review_information,
368
357
  description: "Metadata: A hash containing the review information",
369
358
  optional: true,
370
- is_string: false,
371
359
  type: Hash),
372
360
  FastlaneCore::ConfigItem.new(key: :app_review_attachment_file,
373
361
  env_name: "DELIVER_APP_REVIEW_ATTACHMENT_FILE",
374
362
  description: "Metadata: Path to the app review attachment file",
375
- optional: true,
376
- is_string: true),
363
+ optional: true),
377
364
  # Localised
378
365
  FastlaneCore::ConfigItem.new(key: :description,
379
366
  description: "Metadata: The localised app description",
380
367
  optional: true,
381
- is_string: false),
368
+ type: Hash),
382
369
  FastlaneCore::ConfigItem.new(key: :name,
383
370
  description: "Metadata: The localised app name",
384
371
  optional: true,
385
- is_string: false),
372
+ type: Hash),
386
373
  FastlaneCore::ConfigItem.new(key: :subtitle,
387
374
  description: "Metadata: The localised app subtitle",
388
375
  optional: true,
389
- is_string: false,
390
376
  type: Hash,
391
377
  verify_block: proc do |value|
392
378
  UI.user_error!(":subtitle must be a hash, with the language being the key") unless value.kind_of?(Hash)
@@ -394,7 +380,6 @@ module Deliver
394
380
  FastlaneCore::ConfigItem.new(key: :keywords,
395
381
  description: "Metadata: An array of localised keywords",
396
382
  optional: true,
397
- is_string: false,
398
383
  type: Hash,
399
384
  verify_block: proc do |value|
400
385
  UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash)
@@ -409,7 +394,6 @@ module Deliver
409
394
  FastlaneCore::ConfigItem.new(key: :promotional_text,
410
395
  description: "Metadata: An array of localised promotional texts",
411
396
  optional: true,
412
- is_string: false,
413
397
  type: Hash,
414
398
  verify_block: proc do |value|
415
399
  UI.user_error!(":keywords must be a hash, with the language being the key") unless value.kind_of?(Hash)
@@ -417,23 +401,23 @@ module Deliver
417
401
  FastlaneCore::ConfigItem.new(key: :release_notes,
418
402
  description: "Metadata: Localised release notes for this version",
419
403
  optional: true,
420
- is_string: false),
404
+ type: Hash),
421
405
  FastlaneCore::ConfigItem.new(key: :privacy_url,
422
406
  description: "Metadata: Localised privacy url",
423
407
  optional: true,
424
- is_string: false),
408
+ type: Hash),
425
409
  FastlaneCore::ConfigItem.new(key: :apple_tv_privacy_policy,
426
410
  description: "Metadata: Localised Apple TV privacy policy text",
427
411
  optional: true,
428
- is_string: false),
412
+ type: Hash),
429
413
  FastlaneCore::ConfigItem.new(key: :support_url,
430
414
  description: "Metadata: Localised support url",
431
415
  optional: true,
432
- is_string: false),
416
+ type: Hash),
433
417
  FastlaneCore::ConfigItem.new(key: :marketing_url,
434
418
  description: "Metadata: Localised marketing url",
435
419
  optional: true,
436
- is_string: false),
420
+ type: Hash),
437
421
  # The verify_block has been removed from here and verification now happens in Deliver::DetectValues
438
422
  # Verification needed Spaceship::Tunes.client which required the Deliver::Runner to already by started
439
423
  FastlaneCore::ConfigItem.new(key: :languages,
@@ -445,11 +429,11 @@ module Deliver
445
429
  env_name: "DELIVER_IGNORE_LANGUAGE_DIRECTORY_VALIDATION",
446
430
  description: "Ignore errors when invalid languages are found in metadata and screenshot directories",
447
431
  default_value: false,
448
- is_string: false),
432
+ type: Boolean),
449
433
  FastlaneCore::ConfigItem.new(key: :precheck_include_in_app_purchases,
450
434
  env_name: "PRECHECK_INCLUDE_IN_APP_PURCHASES",
451
435
  description: "Should precheck check in-app purchases?",
452
- is_string: false,
436
+ type: Boolean,
453
437
  optional: true,
454
438
  default_value: true),
455
439
 
@@ -458,7 +442,8 @@ module Deliver
458
442
  short_option: "-p",
459
443
  env_name: "DELIVER_APP_ID",
460
444
  description: "The (spaceship) app ID of the app you want to use/modify",
461
- is_string: false) # don't add any verification here, as it's used to store a spaceship ref
445
+ optional: true,
446
+ type: Integer)
462
447
  ]
463
448
  end
464
449
  end