fastlane 2.206.2 → 2.209.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 (71) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +102 -102
  3. data/deliver/lib/deliver/options.rb +1 -2
  4. data/deliver/lib/deliver/runner.rb +31 -35
  5. data/deliver/lib/deliver/upload_price_tier.rb +3 -1
  6. data/deliver/lib/deliver/upload_screenshots.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/changelog_from_git_commits.rb +1 -1
  8. data/fastlane/lib/fastlane/actions/docs/frame_screenshots.md +1 -1
  9. data/fastlane/lib/fastlane/actions/import_certificate.rb +1 -1
  10. data/fastlane/lib/fastlane/actions/pod_push.rb +19 -1
  11. data/fastlane/lib/fastlane/actions/update_info_plist.rb +1 -1
  12. data/fastlane/lib/fastlane/actions/upload_symbols_to_sentry.rb +1 -1
  13. data/fastlane/lib/fastlane/actions/xcodebuild.rb +8 -2
  14. data/fastlane/lib/fastlane/plugins/template/%gem_name%.gemspec.erb +1 -1
  15. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +5 -1
  16. data/fastlane/lib/fastlane/setup/setup_ios.rb +1 -1
  17. data/fastlane/lib/fastlane/version.rb +1 -1
  18. data/fastlane/swift/Deliverfile.swift +1 -1
  19. data/fastlane/swift/DeliverfileProtocol.swift +2 -2
  20. data/fastlane/swift/Fastlane.swift +31 -11
  21. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/joshholtz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  22. data/fastlane/swift/Gymfile.swift +1 -1
  23. data/fastlane/swift/GymfileProtocol.swift +1 -1
  24. data/fastlane/swift/Matchfile.swift +1 -1
  25. data/fastlane/swift/MatchfileProtocol.swift +5 -1
  26. data/fastlane/swift/Precheckfile.swift +1 -1
  27. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  28. data/fastlane/swift/Scanfile.swift +1 -1
  29. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  30. data/fastlane/swift/Screengrabfile.swift +1 -1
  31. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  32. data/fastlane/swift/Snapshotfile.swift +1 -1
  33. data/fastlane/swift/SnapshotfileProtocol.swift +2 -2
  34. data/fastlane/swift/SocketClient.swift +1 -1
  35. data/fastlane/swift/formatting/Brewfile.lock.json +21 -16
  36. data/fastlane_core/lib/fastlane_core/cert_checker.rb +11 -12
  37. data/fastlane_core/lib/fastlane_core/keychain_importer.rb +1 -0
  38. data/fastlane_core/lib/fastlane_core/project.rb +19 -2
  39. data/frameit/lib/frameit/device_types.rb +2 -0
  40. data/frameit/lib/frameit/frame_downloader.rb +1 -1
  41. data/match/lib/match/encryption.rb +3 -0
  42. data/match/lib/match/importer.rb +1 -0
  43. data/match/lib/match/module.rb +53 -1
  44. data/match/lib/match/nuke.rb +3 -40
  45. data/match/lib/match/options.rb +6 -0
  46. data/match/lib/match/runner.rb +11 -1
  47. data/match/lib/match/setup.rb +1 -1
  48. data/match/lib/match/spaceship_ensure.rb +4 -2
  49. data/match/lib/match/storage/gitlab/client.rb +102 -0
  50. data/match/lib/match/storage/gitlab/secure_file.rb +65 -0
  51. data/match/lib/match/storage/gitlab_secure_files.rb +182 -0
  52. data/match/lib/match/storage.rb +4 -0
  53. data/match/lib/match/table_printer.rb +2 -1
  54. data/match/lib/match/utils.rb +15 -2
  55. data/pilot/lib/pilot/build_manager.rb +2 -2
  56. data/scan/lib/scan/detect_values.rb +6 -0
  57. data/sigh/lib/sigh/download_all.rb +14 -2
  58. data/sigh/lib/sigh/module.rb +3 -1
  59. data/sigh/lib/sigh/runner.rb +7 -0
  60. data/snapshot/lib/snapshot/options.rb +1 -1
  61. data/snapshot/lib/snapshot/reports_generator.rb +1 -0
  62. data/snapshot/lib/snapshot/simulator_launchers/simulator_launcher_base.rb +4 -1
  63. data/spaceship/lib/spaceship/connect_api/models/app.rb +4 -2
  64. data/spaceship/lib/spaceship/connect_api/models/profile.rb +4 -0
  65. data/spaceship/lib/spaceship/connect_api/response.rb +10 -6
  66. data/spaceship/lib/spaceship/connect_api/tunes/tunes.rb +18 -8
  67. data/spaceship/lib/spaceship/tunes/tunes_client.rb +63 -2
  68. data/trainer/lib/trainer/junit_generator.rb +1 -1
  69. metadata +23 -22
  70. data/spaceship/lib/spaceship/connect_api/.response.rb.swp +0 -0
  71. data/spaceship/lib/spaceship/connect_api/models/.app.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 8709bb6f807e965a0a9994a1fedefa13e0b92a05d9424308cd7cbcac25a5e02f
4
- data.tar.gz: f45bede96abcdeb1307634c05547123266ce8c3e4e8a2ca2d078c112df9c5c00
3
+ metadata.gz: 4365af5245c1e699a98517b1fd465039495211ef71e77a2469cc64fa68b242a8
4
+ data.tar.gz: eda45f4dbc2ac0f97440e60d5d6a6b0fa2509b69440ff8dc2330a565d52e1eb3
5
5
  SHA512:
6
- metadata.gz: 7051a939573b286ec7c73e050824b8683266f4560ef4ea4787d8b3f19c238130fa1ac1426e157f545655470a7be32bc99496d1ca813387fd9c37488342a7b0bd
7
- data.tar.gz: b84234e26b2fb02313170410c0e23c26729cc6f4cb35f899265eabec327f9a09cb0542f042f6cd99e9c5101132c257f256a53f4d7352a50a6c77376f90a0003b
6
+ metadata.gz: 42af3ec9ae30e4ce2410fca62ff972a1afa264d7fa97df000b81aa84367dfd95bb818725e4fc7e857532fab026cc8b347a407f25fc11c3cdc7926cc7376677fb
7
+ data.tar.gz: 5d640fabaa7093a42e8b6f70218654a38dc95cc04820026b1616956534f2cc35b458dfe39f4e93653ef79f5718278c84734f16cf55af4cf4c523384b10b490e2
data/README.md CHANGED
@@ -35,75 +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='olivier-halligon'>
39
- <a href='https://github.com/AliSoftware'>
40
- <img src='https://github.com/AliSoftware.png' width='140px;'>
41
- </a>
42
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
43
- </td>
44
- <td id='maksym-grebenets'>
45
- <a href='https://github.com/mgrebenets'>
46
- <img src='https://github.com/mgrebenets.png' width='140px;'>
47
- </a>
48
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
49
- </td>
50
38
  <td id='iulian-onofrei'>
51
39
  <a href='https://github.com/revolter'>
52
40
  <img src='https://github.com/revolter.png' width='140px;'>
53
41
  </a>
54
42
  <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
55
43
  </td>
56
- <td id='satoshi-namai'>
57
- <a href='https://github.com/ainame'>
58
- <img src='https://github.com/ainame.png' width='140px;'>
59
- </a>
60
- <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
61
- </td>
62
- <td id='stefan-natchev'>
63
- <a href='https://github.com/snatchev'>
64
- <img src='https://github.com/snatchev.png' width='140px;'>
65
- </a>
66
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
67
- </td>
68
- </tr>
69
- <tr>
70
- <td id='jimmy-dee'>
71
- <a href='https://github.com/jdee'>
72
- <img src='https://github.com/jdee.png' width='140px;'>
73
- </a>
74
- <h4 align='center'>Jimmy Dee</h4>
75
- </td>
76
- <td id='andrew-mcburney'>
77
- <a href='https://github.com/armcburney'>
78
- <img src='https://github.com/armcburney.png' width='140px;'>
79
- </a>
80
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
81
- </td>
82
- <td id='luka-mirosevic'>
83
- <a href='https://github.com/lmirosevic'>
84
- <img src='https://github.com/lmirosevic.png' width='140px;'>
85
- </a>
86
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
87
- </td>
88
- <td id='jorge-revuelta-h'>
89
- <a href='https://github.com/minuscorp'>
90
- <img src='https://github.com/minuscorp.png' width='140px;'>
44
+ <td id='manish-rathi'>
45
+ <a href='https://github.com/crazymanish'>
46
+ <img src='https://github.com/crazymanish.png' width='140px;'>
91
47
  </a>
92
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
48
+ <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
93
49
  </td>
94
- <td id='aaron-brager'>
95
- <a href='https://github.com/getaaron'>
96
- <img src='https://github.com/getaaron.png' width='140px;'>
50
+ <td id='olivier-halligon'>
51
+ <a href='https://github.com/AliSoftware'>
52
+ <img src='https://github.com/AliSoftware.png' width='140px;'>
97
53
  </a>
98
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
54
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
99
55
  </td>
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;'>
56
+ <td id='łukasz-grabowski'>
57
+ <a href='https://github.com/lucgrabowski'>
58
+ <img src='https://github.com/lucgrabowski.png' width='140px;'>
105
59
  </a>
106
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
60
+ <h4 align='center'>Łukasz Grabowski</h4>
107
61
  </td>
108
62
  <td id='danielle-tomlinson'>
109
63
  <a href='https://github.com/endocrimes'>
@@ -111,43 +65,51 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
111
65
  </a>
112
66
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
113
67
  </td>
114
- <td id='jérôme-lacoste'>
115
- <a href='https://github.com/lacostej'>
116
- <img src='https://github.com/lacostej.png' width='140px;'>
117
- </a>
118
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
119
- </td>
68
+ </tr>
69
+ <tr>
120
70
  <td id='josh-holtz'>
121
71
  <a href='https://github.com/joshdholtz'>
122
72
  <img src='https://github.com/joshdholtz.png' width='140px;'>
123
73
  </a>
124
74
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
125
75
  </td>
76
+ <td id='matthew-ellis'>
77
+ <a href='https://github.com/matthewellis'>
78
+ <img src='https://github.com/matthewellis.png' width='140px;'>
79
+ </a>
80
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
81
+ </td>
82
+ <td id='fumiya-nakamura'>
83
+ <a href='https://github.com/nafu'>
84
+ <img src='https://github.com/nafu.png' width='140px;'>
85
+ </a>
86
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
87
+ </td>
126
88
  <td id='jan-piotrowski'>
127
89
  <a href='https://github.com/janpio'>
128
90
  <img src='https://github.com/janpio.png' width='140px;'>
129
91
  </a>
130
92
  <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
131
93
  </td>
132
- </tr>
133
- <tr>
134
- <td id='max-ott'>
135
- <a href='https://github.com/max-ott'>
136
- <img src='https://github.com/max-ott.png' width='140px;'>
94
+ <td id='manu-wallner'>
95
+ <a href='https://github.com/milch'>
96
+ <img src='https://github.com/milch.png' width='140px;'>
137
97
  </a>
138
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
98
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
139
99
  </td>
140
- <td id='daniel-jankowski'>
141
- <a href='https://github.com/mollyIV'>
142
- <img src='https://github.com/mollyIV.png' width='140px;'>
100
+ </tr>
101
+ <tr>
102
+ <td id='kohki-miki'>
103
+ <a href='https://github.com/giginet'>
104
+ <img src='https://github.com/giginet.png' width='140px;'>
143
105
  </a>
144
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
106
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
145
107
  </td>
146
- <td id='roger-oba'>
147
- <a href='https://github.com/rogerluan'>
148
- <img src='https://github.com/rogerluan.png' width='140px;'>
108
+ <td id='jimmy-dee'>
109
+ <a href='https://github.com/jdee'>
110
+ <img src='https://github.com/jdee.png' width='140px;'>
149
111
  </a>
150
- <h4 align='center'><a href='https://twitter.com/rogerluan_'>Roger Oba</a></h4>
112
+ <h4 align='center'>Jimmy Dee</h4>
151
113
  </td>
152
114
  <td id='helmut-januschka'>
153
115
  <a href='https://github.com/hjanuschka'>
@@ -155,52 +117,90 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
155
117
  </a>
156
118
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
157
119
  </td>
158
- <td id='fumiya-nakamura'>
159
- <a href='https://github.com/nafu'>
160
- <img src='https://github.com/nafu.png' width='140px;'>
120
+ <td id='satoshi-namai'>
121
+ <a href='https://github.com/ainame'>
122
+ <img src='https://github.com/ainame.png' width='140px;'>
161
123
  </a>
162
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
124
+ <h4 align='center'><a href='https://twitter.com/ainame'>Satoshi Namai</a></h4>
125
+ </td>
126
+ <td id='andrew-mcburney'>
127
+ <a href='https://github.com/armcburney'>
128
+ <img src='https://github.com/armcburney.png' width='140px;'>
129
+ </a>
130
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
163
131
  </td>
164
132
  </tr>
165
133
  <tr>
166
- <td id='łukasz-grabowski'>
167
- <a href='https://github.com/lucgrabowski'>
168
- <img src='https://github.com/lucgrabowski.png' width='140px;'>
134
+ <td id='stefan-natchev'>
135
+ <a href='https://github.com/snatchev'>
136
+ <img src='https://github.com/snatchev.png' width='140px;'>
169
137
  </a>
170
- <h4 align='center'>Łukasz Grabowski</h4>
138
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
171
139
  </td>
172
- <td id='manu-wallner'>
173
- <a href='https://github.com/milch'>
174
- <img src='https://github.com/milch.png' width='140px;'>
140
+ <td id='luka-mirosevic'>
141
+ <a href='https://github.com/lmirosevic'>
142
+ <img src='https://github.com/lmirosevic.png' width='140px;'>
175
143
  </a>
176
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
144
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
177
145
  </td>
178
- <td id='matthew-ellis'>
179
- <a href='https://github.com/matthewellis'>
180
- <img src='https://github.com/matthewellis.png' width='140px;'>
146
+ <td id='maksym-grebenets'>
147
+ <a href='https://github.com/mgrebenets'>
148
+ <img src='https://github.com/mgrebenets.png' width='140px;'>
181
149
  </a>
182
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
150
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
183
151
  </td>
184
- <td id='manish-rathi'>
185
- <a href='https://github.com/crazymanish'>
186
- <img src='https://github.com/crazymanish.png' width='140px;'>
152
+ <td id='jérôme-lacoste'>
153
+ <a href='https://github.com/lacostej'>
154
+ <img src='https://github.com/lacostej.png' width='140px;'>
187
155
  </a>
188
- <h4 align='center'><a href='https://twitter.com/iammanishrathi'>Manish Rathi</a></h4>
156
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
189
157
  </td>
190
- <td id='kohki-miki'>
191
- <a href='https://github.com/giginet'>
192
- <img src='https://github.com/giginet.png' width='140px;'>
158
+ <td id='jorge-revuelta-h'>
159
+ <a href='https://github.com/minuscorp'>
160
+ <img src='https://github.com/minuscorp.png' width='140px;'>
193
161
  </a>
194
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
162
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
195
163
  </td>
196
164
  </tr>
197
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>
198
172
  <td id='felix-krause'>
199
173
  <a href='https://github.com/KrauseFx'>
200
174
  <img src='https://github.com/KrauseFx.png' width='140px;'>
201
175
  </a>
202
176
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
203
177
  </td>
178
+ <td id='joshua-liebowitz'>
179
+ <a href='https://github.com/taquitos'>
180
+ <img src='https://github.com/taquitos.png' width='140px;'>
181
+ </a>
182
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
183
+ </td>
184
+ <td id='aaron-brager'>
185
+ <a href='https://github.com/getaaron'>
186
+ <img src='https://github.com/getaaron.png' width='140px;'>
187
+ </a>
188
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
189
+ </td>
190
+ <td id='daniel-jankowski'>
191
+ <a href='https://github.com/mollyIV'>
192
+ <img src='https://github.com/mollyIV.png' width='140px;'>
193
+ </a>
194
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
195
+ </td>
196
+ </tr>
197
+ <tr>
198
+ <td id='max-ott'>
199
+ <a href='https://github.com/max-ott'>
200
+ <img src='https://github.com/max-ott.png' width='140px;'>
201
+ </a>
202
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</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_.
@@ -164,8 +164,7 @@ module Deliver
164
164
  default_value: false),
165
165
  FastlaneCore::ConfigItem.new(key: :sync_screenshots,
166
166
  env_name: "DELIVER_SYNC_SCREENSHOTS",
167
- description: "Sync screenshots with local ones. This is currently beta option" \
168
- "so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well",
167
+ description: "Sync screenshots with local ones. This is currently beta option so set true to 'FASTLANE_ENABLE_BETA_DELIVER_SYNC_SCREENSHOTS' environment variable as well",
169
168
  type: Boolean,
170
169
  default_value: false),
171
170
  FastlaneCore::ConfigItem.new(key: :submit_for_review,
@@ -165,35 +165,33 @@ module Deliver
165
165
  def verify_binary
166
166
  UI.message("Verifying binary with App Store Connect")
167
167
 
168
- verify_ipa = options[:ipa]
169
- verify_pkg = options[:pkg]
170
-
171
- # 2020-01-27
172
- # Only verify platform if if both ipa and pkg exists (for backwards support)
173
- if verify_ipa && verify_pkg
174
- verify_ipa = ["ios", "appletvos"].include?(options[:platform])
175
- verify_pkg = options[:platform] == "osx"
176
- end
168
+ ipa_path = options[:ipa]
169
+ pkg_path = options[:pkg]
170
+
171
+ platform = options[:platform]
172
+ transporter = transporter_for_selected_team
177
173
 
178
- if verify_ipa
174
+ case platform
175
+ when "ios", "appletvos"
179
176
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
180
177
  app_id: Deliver.cache[:app].id,
181
- ipa_path: options[:ipa],
178
+ ipa_path: ipa_path,
182
179
  package_path: "/tmp",
183
- platform: options[:platform]
180
+ platform: platform
184
181
  )
185
- elsif verify_pkg
182
+ result = transporter.verify(package_path: package_path)
183
+ when "osx"
186
184
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
187
185
  app_id: Deliver.cache[:app].id,
188
- pkg_path: options[:pkg],
186
+ pkg_path: pkg_path,
189
187
  package_path: "/tmp",
190
- platform: options[:platform]
188
+ platform: platform
191
189
  )
190
+ result = transporter.verify(package_path: package_path)
191
+ else
192
+ UI.user_error!("No suitable file found for verify for platform: #{options[:platform]}")
192
193
  end
193
194
 
194
- transporter = transporter_for_selected_team
195
- result = transporter.verify(package_path: package_path)
196
-
197
195
  unless result
198
196
  transporter_errors = transporter.displayable_errors
199
197
  UI.user_error!("Error verifying the binary file: \n #{transporter_errors}")
@@ -204,35 +202,33 @@ module Deliver
204
202
  def upload_binary
205
203
  UI.message("Uploading binary to App Store Connect")
206
204
 
207
- upload_ipa = options[:ipa]
208
- upload_pkg = options[:pkg]
205
+ ipa_path = options[:ipa]
206
+ pkg_path = options[:pkg]
209
207
 
210
- # 2020-01-27
211
- # Only verify platform if if both ipa and pkg exists (for backwards support)
212
- if upload_ipa && upload_pkg
213
- upload_ipa = ["ios", "appletvos"].include?(options[:platform])
214
- upload_pkg = options[:platform] == "osx"
215
- end
208
+ platform = options[:platform]
209
+ transporter = transporter_for_selected_team
216
210
 
217
- if upload_ipa
211
+ case platform
212
+ when "ios", "appletvos"
218
213
  package_path = FastlaneCore::IpaUploadPackageBuilder.new.generate(
219
214
  app_id: Deliver.cache[:app].id,
220
- ipa_path: options[:ipa],
215
+ ipa_path: ipa_path,
221
216
  package_path: "/tmp",
222
- platform: options[:platform]
217
+ platform: platform
223
218
  )
224
- elsif upload_pkg
219
+ result = transporter.upload(package_path: package_path, asset_path: ipa_path)
220
+ when "osx"
225
221
  package_path = FastlaneCore::PkgUploadPackageBuilder.new.generate(
226
222
  app_id: Deliver.cache[:app].id,
227
- pkg_path: options[:pkg],
223
+ pkg_path: pkg_path,
228
224
  package_path: "/tmp",
229
- platform: options[:platform]
225
+ platform: platform
230
226
  )
227
+ result = transporter.upload(package_path: package_path, asset_path: pkg_path)
228
+ else
229
+ UI.user_error!("No suitable file found for upload for platform: #{options[:platform]}")
231
230
  end
232
231
 
233
- transporter = transporter_for_selected_team
234
- result = transporter.upload(package_path: package_path, asset_path: upload_ipa || upload_pkg)
235
-
236
232
  unless result
237
233
  transporter_errors = transporter.displayable_errors
238
234
  UI.user_error!("Error uploading ipa file: \n #{transporter_errors}")
@@ -12,7 +12,9 @@ module Deliver
12
12
  app = Deliver.cache[:app]
13
13
 
14
14
  attributes = {}
15
- territory_ids = []
15
+
16
+ # Check App update method to understand how to use territory_ids.
17
+ territory_ids = nil # nil won't update app's territory_ids, empty array would remove app from sale.
16
18
 
17
19
  # As of 2020-09-14:
18
20
  # Official App Store Connect does not have an endpoint to get app prices for an app
@@ -145,7 +145,7 @@ module Deliver
145
145
  if duplicate
146
146
  UI.message("Previous uploaded. Skipping '#{screenshot.path}'...")
147
147
  else
148
- UI.verbose("Queued uplaod sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
148
+ UI.verbose("Queued upload sceeenshot job for #{localization.locale} #{app_screenshot_set.screenshot_display_type} #{screenshot.path}")
149
149
  worker.enqueue(UploadScreenshotJob.new(app_screenshot_set, screenshot.path))
150
150
  number_of_screenshots_per_set[app_screenshot_set] += 1
151
151
  end
@@ -141,7 +141,7 @@ module Fastlane
141
141
  end),
142
142
  FastlaneCore::ConfigItem.new(key: :merge_commit_filtering,
143
143
  env_name: 'FL_CHANGELOG_FROM_GIT_COMMITS_MERGE_COMMIT_FILTERING',
144
- description: "Controls inclusion of merge commits when collecting the changelog. Valid values: #{GIT_MERGE_COMMIT_FILTERING_OPTIONS.map { |o| "`:#{o}`" }.join(', ')}",
144
+ description: "Controls inclusion of merge commits when collecting the changelog. Valid values: #{GIT_MERGE_COMMIT_FILTERING_OPTIONS.map { |o| "'#{o}'" }.join(', ')}",
145
145
  optional: true,
146
146
  default_value: 'include_merges',
147
147
  verify_block: proc do |value|
@@ -60,7 +60,7 @@ Here is a nice gif, that shows _frameit_ in action:
60
60
  <h5 align="center">The <em>frameit</em> 2.0 update was kindly sponsored by <a href="https://mindnode.com/">MindNode</a>, seen in the screenshots above.</h5>
61
61
 
62
62
 
63
- The first time that _frameit_ is executed the frames will be downloaded automatically. Originally the frames are coming from [Facebook frameset](http://facebook.design/devices) and they are kept on [this repo](https://github.com/fastlane/frameit-frames).
63
+ The first time that _frameit_ is executed the frames will be downloaded automatically. Originally the frames are coming from [Facebook frameset](https://design.facebook.com/toolsandresources/devices/) and they are kept on [this repo](https://github.com/fastlane/frameit-frames).
64
64
 
65
65
  More information about this process and how to update the frames can be found [here](https://github.com/fastlane/fastlane/tree/master/frameit/frames_generator)
66
66
 
@@ -58,7 +58,7 @@ module Fastlane
58
58
 
59
59
  def self.example_code
60
60
  [
61
- 'import_certificate(certificate_path: "certs/AppleWWDRCA.cer")',
61
+ 'import_certificate(certificate_path: "certs/AppleWWDRCA6.cer")',
62
62
  'import_certificate(
63
63
  certificate_path: "certs/dist.p12",
64
64
  certificate_password: ENV["CERTIFICATE_PASSWORD"] || "default"
@@ -59,6 +59,14 @@ module Fastlane
59
59
  command << "--synchronous"
60
60
  end
61
61
 
62
+ if params[:no_overwrite]
63
+ command << "--no-overwrite"
64
+ end
65
+
66
+ if params[:local_only]
67
+ command << "--local-only"
68
+ end
69
+
62
70
  result = Actions.sh(command.join(' '))
63
71
  UI.success("Successfully pushed Podspec ⬆️ ")
64
72
  return result
@@ -143,7 +151,17 @@ module Fastlane
143
151
  description: "If validation depends on other recently pushed pods, synchronize",
144
152
  optional: true,
145
153
  type: Boolean,
146
- env_name: "FL_POD_PUSH_SYNCHRONOUS")
154
+ env_name: "FL_POD_PUSH_SYNCHRONOUS"),
155
+ FastlaneCore::ConfigItem.new(key: :no_overwrite,
156
+ description: "Disallow pushing that would overwrite an existing spec",
157
+ optional: true,
158
+ type: Boolean,
159
+ env_name: "FL_POD_PUSH_NO_OVERWRITE"),
160
+ FastlaneCore::ConfigItem.new(key: :local_only,
161
+ description: "Does not perform the step of pushing REPO to its remote",
162
+ optional: true,
163
+ type: Boolean,
164
+ env_name: "FL_POD_PUSH_LOCAL_ONLY")
147
165
  ]
148
166
  end
149
167
 
@@ -80,7 +80,7 @@ module Fastlane
80
80
  description: "Path to info plist",
81
81
  optional: true,
82
82
  verify_block: proc do |value|
83
- UI.user_error!("Invalid plist file") unless value[-6..-1].casecmp(".plist").zero?
83
+ UI.user_error!("Invalid plist file") unless value.downcase.end_with?(".plist")
84
84
  end),
85
85
  FastlaneCore::ConfigItem.new(key: :scheme,
86
86
  env_name: "FL_UPDATE_PLIST_APP_SCHEME",
@@ -48,7 +48,7 @@ module Fastlane
48
48
  upload_dsym(resource, dsym)
49
49
  end
50
50
 
51
- # Return uplaoded dSYM paths
51
+ # Return uploaded dSYM paths
52
52
  uploaded_paths
53
53
  end
54
54
 
@@ -267,10 +267,11 @@ module Fastlane
267
267
 
268
268
  output_result = ""
269
269
 
270
+ override_architecture_prefix = params[:xcodebuild_architecture] ? "arch -#{params[:xcodebuild_architecture]} " : ""
270
271
  # In some cases the simulator is not booting up in time
271
272
  # One way to solve it is to try to rerun it for one more time
272
273
  begin
273
- output_result = Actions.sh "set -o pipefail && xcodebuild #{xcodebuild_args} #{pipe_command}"
274
+ output_result = Actions.sh "set -o pipefail && #{override_architecture_prefix}xcodebuild #{xcodebuild_args} #{pipe_command}"
274
275
  rescue => ex
275
276
  exit_status = $?.exitstatus
276
277
 
@@ -383,8 +384,9 @@ module Fastlane
383
384
  ['scheme', 'The scheme to build'],
384
385
  ['build_settings', 'Hash of additional build information'],
385
386
  ['xcargs', 'Pass additional xcodebuild options'],
386
- ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
387
387
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
388
+ ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
389
+ ['xcodebuild_architecture', 'Allows to set the architecture that `xcodebuild` is run with, for example to force it to run under Rosetta on an Apple Silicon mac'],
388
390
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
389
391
  ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
390
392
  ['xcpretty_utf', 'Specifies xcpretty should use utf8 when reporting builds. This has no effect when raw_buildlog is specified.']
@@ -437,6 +439,7 @@ module Fastlane
437
439
  ['build_settings', 'Hash of additional build information'],
438
440
  ['xcargs', 'Pass additional xcodebuild options'],
439
441
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
442
+ ['xcodebuild_architecture', 'Allows to set the architecture that `xcodebuild` is run with, for example to force it to run under Rosetta on an Apple Silicon mac'],
440
443
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
441
444
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
442
445
  ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
@@ -529,6 +532,7 @@ module Fastlane
529
532
  ['build_settings', 'Hash of additional build information'],
530
533
  ['xcargs', 'Pass additional xcodebuild options'],
531
534
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
535
+ ['xcodebuild_architecture', 'Allows to set the architecture that `xcodebuild` is run with, for example to force it to run under Rosetta on an Apple Silicon mac'],
532
536
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
533
537
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
534
538
  ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
@@ -571,6 +575,7 @@ module Fastlane
571
575
  ['build_settings', 'Hash of additional build information'],
572
576
  ['xcargs', 'Pass additional xcodebuild options'],
573
577
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
578
+ ['xcodebuild_architecture', 'Allows to set the architecture that `xcodebuild` is run with, for example to force it to run under Rosetta on an Apple Silicon mac'],
574
579
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
575
580
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
576
581
  ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
@@ -621,6 +626,7 @@ module Fastlane
621
626
  ['destination_timeout', 'The timeout for connecting to the simulator, in seconds'],
622
627
  ['enable_code_coverage', 'Turn code coverage on or off when testing. eg. true|false. Requires Xcode 7+'],
623
628
  ['output_style', 'Set the output format to one of: :standard (Colored UTF8 output, default), :basic (black & white ASCII output)'],
629
+ ['xcodebuild_architecture', 'Allows to set the architecture that `xcodebuild` is run with, for example to force it to run under Rosetta on an Apple Silicon mac'],
624
630
  ['buildlog_path', 'The path where the xcodebuild.log will be created, by default it is created in ~/Library/Logs/fastlane/xcbuild'],
625
631
  ['raw_buildlog', 'Set to true to see xcodebuild raw output. Default value is false'],
626
632
  ['xcpretty_output', 'specifies the output type for xcpretty. eg. \'test\', or \'simple\''],
@@ -16,7 +16,7 @@ Gem::Specification.new do |spec|
16
16
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
17
17
  spec.require_paths = ['lib']
18
18
 
19
- spec.required_ruby_version = '>= 2.5'
19
+ spec.required_ruby_version = '>= 2.6'
20
20
 
21
21
  # Don't add a dependency to fastlane or fastlane_re
22
22
  # since this would cause a circular dependency
@@ -3,7 +3,7 @@ require:
3
3
  - rubocop/require_tools
4
4
  - rubocop-performance
5
5
  AllCops:
6
- TargetRubyVersion: 2.5
6
+ TargetRubyVersion: 2.6
7
7
  NewCops: enable
8
8
  Include:
9
9
  - "**/*.rb"
@@ -18,6 +18,10 @@ AllCops:
18
18
  - "**/lib/assets/MatchfileTemplate"
19
19
  - "**/spec/fixtures/broken_files/broken_file.rb"
20
20
  - "**/*.provisionprofile"
21
+ Lint/ErbNewArguments:
22
+ Enabled: false
23
+ Style/SlicingWithRange:
24
+ Enabled: false
21
25
  Style/MultipleComparison:
22
26
  Enabled: false
23
27
  Style/PercentLiteralDelimiters:
@@ -387,7 +387,7 @@ module Fastlane
387
387
  def verify_app_exists_itc!
388
388
  UI.user_error!("No app identifier provided") if self.app_identifier.to_s.length == 0
389
389
  UI.message("Checking if the app '#{self.app_identifier}' exists on App Store Connect...")
390
- app = Spaceship::Tunes::Application.find(self.app_identifier)
390
+ app = Spaceship::ConnectAPI::App.find(self.app_identifier)
391
391
  if app.nil?
392
392
  UI.error("Looks like the app '#{self.app_identifier}' isn't available on #{'App Store Connect'.bold.underline}")
393
393
  UI.error("for the team ID '#{self.itc_team_id}' on Apple ID '#{self.user}'")
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.206.2'.freeze
2
+ VERSION = '2.209.0'.freeze
3
3
  DESCRIPTION = "The easiest way to automate beta deployments and releases for your iOS and Android apps".freeze
4
4
  MINIMUM_XCODE_RELEASE = "7.0".freeze
5
5
  RUBOCOP_REQUIREMENT = '1.12.1'.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.206.2
20
+ // Generated with fastlane 2.209.0