fastlane 2.166.0 → 2.167.0

This diff has not been reviewed by any users.
Sign up to get free protection for your applications and to get access to all the features.
Files changed (40) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +78 -78
  3. data/deliver/lib/deliver/app_screenshot.rb +6 -2
  4. data/fastlane/lib/fastlane/actions/add_git_tag.rb +9 -2
  5. data/fastlane/lib/fastlane/actions/spm.rb +6 -0
  6. data/fastlane/lib/fastlane/actions/update_fastlane.rb +5 -0
  7. data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
  8. data/fastlane/lib/fastlane/features.rb +1 -1
  9. data/fastlane/lib/fastlane/plugins/template/.rubocop.yml +1 -0
  10. data/fastlane/lib/fastlane/version.rb +1 -1
  11. data/fastlane/swift/Deliverfile.swift +1 -1
  12. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  13. data/fastlane/swift/Fastfile.swift +1 -1
  14. data/fastlane/swift/Fastlane.swift +6 -3
  15. data/fastlane/swift/Gymfile.swift +1 -1
  16. data/fastlane/swift/GymfileProtocol.swift +1 -1
  17. data/fastlane/swift/LaneFileProtocol.swift +2 -2
  18. data/fastlane/swift/MainProcess.swift +2 -0
  19. data/fastlane/swift/Matchfile.swift +1 -1
  20. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  21. data/fastlane/swift/Precheckfile.swift +1 -1
  22. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  23. data/fastlane/swift/Runner.swift +1 -1
  24. data/fastlane/swift/Scanfile.swift +1 -1
  25. data/fastlane/swift/ScanfileProtocol.swift +1 -1
  26. data/fastlane/swift/Screengrabfile.swift +1 -1
  27. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  28. data/fastlane/swift/Snapshotfile.swift +1 -1
  29. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  30. data/fastlane/swift/SocketClient.swift +1 -1
  31. data/fastlane_core/lib/fastlane_core/cert_checker.rb +12 -7
  32. data/fastlane_core/lib/fastlane_core/provisioning_profile.rb +3 -1
  33. data/fastlane_core/lib/fastlane_core/ui/disable_colors.rb +8 -0
  34. data/gym/lib/gym/code_signing_mapping.rb +1 -1
  35. data/match/lib/match/nuke.rb +9 -5
  36. data/pilot/lib/pilot/build_manager.rb +9 -3
  37. data/spaceship/lib/spaceship/connect_api/models/beta_group.rb +9 -0
  38. data/spaceship/lib/spaceship/connect_api/testflight/testflight.rb +12 -0
  39. metadata +18 -20
  40. data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a087d077b77ba7df4a5d383d8d607aeda9f3b67e
4
- data.tar.gz: 31a97905c7bf5685558efd65933780580b69f470
2
+ SHA256:
3
+ metadata.gz: 12fc2f2fba2826c89ba9d96fb23aaf99ff241513f980e97cc6bd911683b563d1
4
+ data.tar.gz: 189a71d8c59ce592ec3ef3c94c6cd4605ae3e6e130fb8dfd57a286aeffbffad4
5
5
  SHA512:
6
- metadata.gz: 155ad8ce03e385a45ebcd3ad1757fa6cc25ae2fda564819f01f61af4a2a871b78ee5a1b5510571516dd8e059482a8a53361aedf1ede90619fe64ce42dcde4cca
7
- data.tar.gz: cc279dfeae02d6b401761bbdc08e0763a8f10fc7b36c9f1a6c5d369502432e87b4ff9bac93a30997dc5709f282e93962942622c65c05c644494f844f3c875b4f
6
+ metadata.gz: 2ce1affc526767654afe6c01483ae298d0a99b09f433fdae244956ff01d46947fb785e3d934bfa052c16c3b1064659ff368eda6746181162964ffd139a46ff61
7
+ data.tar.gz: 7b33693ca6d648c49065a72152357491945a43f2936b245dde1eda2d91855eb319d23a4080315f9eb1c70bf2f90d6e4df845611acfd8674b9853a83e0dcded15
data/README.md CHANGED
@@ -34,17 +34,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
34
34
  <!-- This table is regenerated and resorted on each release -->
35
35
  <table id='team'>
36
36
  <tr>
37
- <td id='max-ott'>
38
- <a href='https://github.com/max-ott'>
39
- <img src='https://github.com/max-ott.png?size=140'>
40
- </a>
41
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
42
- </td>
43
- <td id='danielle-tomlinson'>
44
- <a href='https://github.com/endocrimes'>
45
- <img src='https://github.com/endocrimes.png?size=140'>
37
+ <td id='aaron-brager'>
38
+ <a href='https://github.com/getaaron'>
39
+ <img src='https://github.com/getaaron.png?size=140'>
46
40
  </a>
47
- <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
48
42
  </td>
49
43
  <td id='jimmy-dee'>
50
44
  <a href='https://github.com/jdee'>
@@ -52,11 +46,11 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
52
46
  </a>
53
47
  <h4 align='center'>Jimmy Dee</h4>
54
48
  </td>
55
- <td id='daniel-jankowski'>
56
- <a href='https://github.com/mollyIV'>
57
- <img src='https://github.com/mollyIV.png?size=140'>
49
+ <td id='max-ott'>
50
+ <a href='https://github.com/max-ott'>
51
+ <img src='https://github.com/max-ott.png?size=140'>
58
52
  </a>
59
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
53
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
60
54
  </td>
61
55
  <td id='jorge-revuelta-h'>
62
56
  <a href='https://github.com/minuscorp'>
@@ -64,89 +58,89 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
64
58
  </a>
65
59
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
66
60
  </td>
67
- </tr>
68
- <tr>
69
- <td id='fumiya-nakamura'>
70
- <a href='https://github.com/nafu'>
71
- <img src='https://github.com/nafu.png?size=140'>
72
- </a>
73
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
74
- </td>
75
61
  <td id='manu-wallner'>
76
62
  <a href='https://github.com/milch'>
77
63
  <img src='https://github.com/milch.png?size=140'>
78
64
  </a>
79
65
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
80
66
  </td>
81
- <td id='aaron-brager'>
82
- <a href='https://github.com/getaaron'>
83
- <img src='https://github.com/getaaron.png?size=140'>
67
+ </tr>
68
+ <tr>
69
+ <td id='jan-piotrowski'>
70
+ <a href='https://github.com/janpio'>
71
+ <img src='https://github.com/janpio.png?size=140'>
84
72
  </a>
85
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
86
74
  </td>
87
- <td id='kohki-miki'>
88
- <a href='https://github.com/giginet'>
89
- <img src='https://github.com/giginet.png?size=140'>
75
+ <td id='olivier-halligon'>
76
+ <a href='https://github.com/AliSoftware'>
77
+ <img src='https://github.com/AliSoftware.png?size=140'>
90
78
  </a>
91
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
92
80
  </td>
93
- <td id='helmut-januschka'>
94
- <a href='https://github.com/hjanuschka'>
95
- <img src='https://github.com/hjanuschka.png?size=140'>
81
+ <td id='jérôme-lacoste'>
82
+ <a href='https://github.com/lacostej'>
83
+ <img src='https://github.com/lacostej.png?size=140'>
96
84
  </a>
97
- <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
98
86
  </td>
99
- </tr>
100
- <tr>
101
- <td id='matthew-ellis'>
102
- <a href='https://github.com/matthewellis'>
103
- <img src='https://github.com/matthewellis.png?size=140'>
87
+ <td id='luka-mirosevic'>
88
+ <a href='https://github.com/lmirosevic'>
89
+ <img src='https://github.com/lmirosevic.png?size=140'>
104
90
  </a>
105
- <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
106
92
  </td>
93
+ <td id='stefan-natchev'>
94
+ <a href='https://github.com/snatchev'>
95
+ <img src='https://github.com/snatchev.png?size=140'>
96
+ </a>
97
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
98
+ </td>
99
+ </tr>
100
+ <tr>
107
101
  <td id='joshua-liebowitz'>
108
102
  <a href='https://github.com/taquitos'>
109
103
  <img src='https://github.com/taquitos.png?size=140'>
110
104
  </a>
111
105
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
112
106
  </td>
113
- <td id='jan-piotrowski'>
114
- <a href='https://github.com/janpio'>
115
- <img src='https://github.com/janpio.png?size=140'>
107
+ <td id='andrew-mcburney'>
108
+ <a href='https://github.com/armcburney'>
109
+ <img src='https://github.com/armcburney.png?size=140'>
116
110
  </a>
117
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
118
112
  </td>
119
- <td id='iulian-onofrei'>
120
- <a href='https://github.com/revolter'>
121
- <img src='https://github.com/revolter.png?size=140'>
113
+ <td id='matthew-ellis'>
114
+ <a href='https://github.com/matthewellis'>
115
+ <img src='https://github.com/matthewellis.png?size=140'>
122
116
  </a>
123
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
117
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
124
118
  </td>
125
- <td id='maksym-grebenets'>
126
- <a href='https://github.com/mgrebenets'>
127
- <img src='https://github.com/mgrebenets.png?size=140'>
119
+ <td id='kohki-miki'>
120
+ <a href='https://github.com/giginet'>
121
+ <img src='https://github.com/giginet.png?size=140'>
128
122
  </a>
129
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
123
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
130
124
  </td>
131
- </tr>
132
- <tr>
133
- <td id='josh-holtz'>
134
- <a href='https://github.com/joshdholtz'>
135
- <img src='https://github.com/joshdholtz.png?size=140'>
125
+ <td id='daniel-jankowski'>
126
+ <a href='https://github.com/mollyIV'>
127
+ <img src='https://github.com/mollyIV.png?size=140'>
136
128
  </a>
137
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
129
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
138
130
  </td>
139
- <td id='jérôme-lacoste'>
140
- <a href='https://github.com/lacostej'>
141
- <img src='https://github.com/lacostej.png?size=140'>
131
+ </tr>
132
+ <tr>
133
+ <td id='helmut-januschka'>
134
+ <a href='https://github.com/hjanuschka'>
135
+ <img src='https://github.com/hjanuschka.png?size=140'>
142
136
  </a>
143
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
144
138
  </td>
145
- <td id='andrew-mcburney'>
146
- <a href='https://github.com/armcburney'>
147
- <img src='https://github.com/armcburney.png?size=140'>
139
+ <td id='maksym-grebenets'>
140
+ <a href='https://github.com/mgrebenets'>
141
+ <img src='https://github.com/mgrebenets.png?size=140'>
148
142
  </a>
149
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
150
144
  </td>
151
145
  <td id='felix-krause'>
152
146
  <a href='https://github.com/KrauseFx'>
@@ -154,25 +148,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
154
148
  </a>
155
149
  <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
156
150
  </td>
157
- <td id='olivier-halligon'>
158
- <a href='https://github.com/AliSoftware'>
159
- <img src='https://github.com/AliSoftware.png?size=140'>
151
+ <td id='iulian-onofrei'>
152
+ <a href='https://github.com/revolter'>
153
+ <img src='https://github.com/revolter.png?size=140'>
160
154
  </a>
161
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
156
+ </td>
157
+ <td id='josh-holtz'>
158
+ <a href='https://github.com/joshdholtz'>
159
+ <img src='https://github.com/joshdholtz.png?size=140'>
160
+ </a>
161
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='stefan-natchev'>
166
- <a href='https://github.com/snatchev'>
167
- <img src='https://github.com/snatchev.png?size=140'>
165
+ <td id='danielle-tomlinson'>
166
+ <a href='https://github.com/endocrimes'>
167
+ <img src='https://github.com/endocrimes.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
170
170
  </td>
171
- <td id='luka-mirosevic'>
172
- <a href='https://github.com/lmirosevic'>
173
- <img src='https://github.com/lmirosevic.png?size=140'>
171
+ <td id='fumiya-nakamura'>
172
+ <a href='https://github.com/nafu'>
173
+ <img src='https://github.com/nafu.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -187,7 +187,9 @@ module Deliver
187
187
  return {
188
188
  ScreenSize::IOS_65_MESSAGES => [
189
189
  [1242, 2688],
190
- [2688, 1242]
190
+ [2688, 1242],
191
+ [1284, 2778],
192
+ [2778, 1284]
191
193
  ],
192
194
  ScreenSize::IOS_61_MESSAGES => [
193
195
  [828, 1792],
@@ -243,7 +245,9 @@ module Deliver
243
245
  return {
244
246
  ScreenSize::IOS_65 => [
245
247
  [1242, 2688],
246
- [2688, 1242]
248
+ [2688, 1242],
249
+ [1284, 2778],
250
+ [2778, 1284]
247
251
  ],
248
252
  ScreenSize::IOS_61 => [
249
253
  [828, 1792],
@@ -6,7 +6,13 @@ module Fastlane
6
6
  # lane name in lane_context could be nil because you can just call $fastlane add_git_tag which has no context
7
7
  lane_name = Actions.lane_context[Actions::SharedValues::LANE_NAME].to_s.delete(' ') # no spaces allowed
8
8
 
9
- tag = options[:tag] || "#{options[:grouping]}/#{lane_name}/#{options[:prefix]}#{options[:build_number]}#{options[:postfix]}"
9
+ if options[:tag]
10
+ tag = options[:tag]
11
+ elsif options[:build_number]
12
+ tag = "#{options[:grouping]}/#{lane_name}/#{options[:prefix]}#{options[:build_number]}#{options[:postfix]}"
13
+ else
14
+ UI.user_error!("No value found for 'tag' or 'build_number'. At least one of them must be provided. Note that if you do specify a tag, all other arguments are ignored.")
15
+ end
10
16
  message = options[:message] || "#{tag} (fastlane)"
11
17
 
12
18
  cmd = ['git tag']
@@ -64,7 +70,8 @@ module Fastlane
64
70
  description: "The build number. Defaults to the result of increment_build_number if you\'re using it",
65
71
  default_value: Actions.lane_context[Actions::SharedValues::BUILD_NUMBER],
66
72
  default_value_dynamic: true,
67
- is_string: false),
73
+ is_string: false,
74
+ optional: true),
68
75
  FastlaneCore::ConfigItem.new(key: :message,
69
76
  env_name: "FL_GIT_TAG_MESSAGE",
70
77
  description: "The tag message. Defaults to the tag's name",
@@ -11,6 +11,7 @@ module Fastlane
11
11
  cmd << "--disable-sandbox" if params[:disable_sandbox]
12
12
  cmd << "--verbose" if params[:verbose]
13
13
  cmd << params[:command] if package_commands.include?(params[:command])
14
+ cmd << "--enable-code-coverage" if params[:enable_code_coverage] && params[:command] == 'generate-xcodeproj'
14
15
  if params[:xcconfig]
15
16
  cmd << "--xcconfig-overrides #{params[:xcconfig]}"
16
17
  end
@@ -44,6 +45,11 @@ module Fastlane
44
45
  verify_block: proc do |value|
45
46
  UI.user_error!("Please pass a valid command. Use one of the following: #{available_commands.join(', ')}") unless available_commands.include?(value)
46
47
  end),
48
+ FastlaneCore::ConfigItem.new(key: :enable_code_coverage,
49
+ env_name: "FL_SPM_ENABLE_CODE_COVERAGE",
50
+ description: "Enables code coverage for the generated Xcode project when using the generate-xcodeproj command",
51
+ is_string: false,
52
+ optional: true),
47
53
  FastlaneCore::ConfigItem.new(key: :build_path,
48
54
  env_name: "FL_SPM_BUILD_PATH",
49
55
  description: "Specify build/cache directory [default: ./.build]",
@@ -71,6 +71,11 @@ module Fastlane
71
71
  cleaner.execute
72
72
  end
73
73
 
74
+ if FastlaneCore::FastlaneFolder.swift?
75
+ upgrader = SwiftRunnerUpgrader.new
76
+ upgrader.upgrade_if_needed!
77
+ end
78
+
74
79
  UI.message("fastlane.tools successfully updated! I will now restart myself... 😴")
75
80
 
76
81
  # Set no_update to true so we don't try to update again
@@ -123,7 +123,7 @@ module Fastlane
123
123
  end
124
124
 
125
125
  # Since loading dotenv should respect additional environments passed using
126
- # --env, we must extrat the arguments out of ARGV and process them before
126
+ # --env, we must extract the arguments out of ARGV and process them before
127
127
  # calling into commander. This is required since the ENV must be configured
128
128
  # before running any other commands in order to correctly respect variables
129
129
  # like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
@@ -1,4 +1,4 @@
1
- # Use this file as the place to register Feature switches for the fastlan_core project
1
+ # Use this file as the place to register Feature switches for the fastlane_core project
2
2
 
3
3
  # FastlaneCore::Feature.register(env_var: 'YOUR_FEATURE_SWITCH_ENV_VAR',
4
4
  # description: 'Describe what this feature switch controls')
@@ -41,6 +41,7 @@ Require/MissingRequireStatement:
41
41
  - "**/spec/**/*.rb"
42
42
  - "**/spec_helper.rb"
43
43
  - spaceship/lib/spaceship/babosa_fix.rb
44
+ - fastlane_core/lib/fastlane_core/ui/disable_colors.rb
44
45
  - "**/Fastfile"
45
46
  - "**/*.gemspec"
46
47
  - rakelib/**/*
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.166.0'.freeze
2
+ VERSION = '2.167.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 = '0.49.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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -256,4 +256,4 @@ public extension DeliverfileProtocol {
256
256
 
257
257
  // Please don't remove the lines below
258
258
  // They are used to detect outdated files
259
- // FastlaneRunnerAPIVersion [0.9.49]
259
+ // FastlaneRunnerAPIVersion [0.9.50]
@@ -5,7 +5,7 @@
5
5
 
6
6
  import Foundation
7
7
 
8
- open class Fastfile: LaneFile {
8
+ open class Fastfile: LaneFile {
9
9
  override public init() {
10
10
  super.init()
11
11
  }
@@ -76,7 +76,7 @@ public func addGitTag(tag: String? = nil,
76
76
  grouping: String = "builds",
77
77
  prefix: String = "",
78
78
  postfix: String = "",
79
- buildNumber: Any,
79
+ buildNumber: Any? = nil,
80
80
  message: String? = nil,
81
81
  commit: String? = nil,
82
82
  force: Bool = false,
@@ -7445,6 +7445,7 @@ public func splunkmint(dsym: String? = nil,
7445
7445
 
7446
7446
  - parameters:
7447
7447
  - command: The swift command (one of: build, test, clean, reset, update, resolve, generate-xcodeproj, init)
7448
+ - enableCodeCoverage: Enables code coverage for the generated Xcode project when using the generate-xcodeproj command
7448
7449
  - buildPath: Specify build/cache directory [default: ./.build]
7449
7450
  - packagePath: Change working directory before any other operation
7450
7451
  - xcconfig: Use xcconfig file to override swift package generate-xcodeproj defaults
@@ -7455,6 +7456,7 @@ public func splunkmint(dsym: String? = nil,
7455
7456
  - verbose: Increase verbosity of informational output
7456
7457
  */
7457
7458
  public func spm(command: String = "build",
7459
+ enableCodeCoverage: Any? = nil,
7458
7460
  buildPath: String? = nil,
7459
7461
  packagePath: String? = nil,
7460
7462
  xcconfig: String? = nil,
@@ -7465,6 +7467,7 @@ public func spm(command: String = "build",
7465
7467
  verbose: Bool = false)
7466
7468
  {
7467
7469
  let command = RubyCommand(commandID: "", methodName: "spm", className: nil, args: [RubyCommand.Argument(name: "command", value: command),
7470
+ RubyCommand.Argument(name: "enable_code_coverage", value: enableCodeCoverage),
7468
7471
  RubyCommand.Argument(name: "build_path", value: buildPath),
7469
7472
  RubyCommand.Argument(name: "package_path", value: packagePath),
7470
7473
  RubyCommand.Argument(name: "xcconfig", value: xcconfig),
@@ -9259,7 +9262,7 @@ public func xcov(workspace: String? = nil,
9259
9262
  coverallsServiceJobId: String? = nil,
9260
9263
  coverallsRepoToken: String? = nil,
9261
9264
  xcconfig: String? = nil,
9262
- ideFoundationPath: String = "/Applications/Xcode-12.0.1.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9265
+ ideFoundationPath: String = "/Applications/Xcode-11.7.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
9263
9266
  legacySupport: Bool = false)
9264
9267
  {
9265
9268
  let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
@@ -9405,4 +9408,4 @@ public let snapshotfile = Snapshotfile()
9405
9408
 
9406
9409
  // Please don't remove the lines below
9407
9410
  // They are used to detect outdated files
9408
- // FastlaneRunnerAPIVersion [0.9.102]
9411
+ // FastlaneRunnerAPIVersion [0.9.103]
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -184,4 +184,4 @@ public extension GymfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.52]
187
+ // FastlaneRunnerAPIVersion [0.9.53]
@@ -22,8 +22,8 @@ public protocol LaneFileProtocol: class {
22
22
 
23
23
  public extension LaneFileProtocol {
24
24
  var fastlaneVersion: String { return "" } // Defaults to "" because that means any is fine
25
- func beforeAll(with lane: String) {} // No-op by default
26
- func afterAll(with lane: String) {} // No-op by default
25
+ func beforeAll(with _: String) {} // No-op by default
26
+ func afterAll(with _: String) {} // No-op by default
27
27
  func onError(currentLane _: String, errorInfo _: String) {} // No-op by default
28
28
  func recordLaneDescriptions() {} // No-op by default
29
29
  }
@@ -56,6 +56,8 @@ class MainProcess {
56
56
  print(stdout)
57
57
  self.timeBetweenPrints = Int(self.lastPrintDate.timeIntervalSinceNow)
58
58
  }
59
+
60
+ // swiftformat:disable:next redundantSelf
59
61
  _ = Runner.waitWithPolling(self.timeBetweenPrints, toEventually: { $0 > 5 }, timeout: 10)
60
62
  thread.start()
61
63
  #endif
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -184,4 +184,4 @@ public extension MatchfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.46]
187
+ // FastlaneRunnerAPIVersion [0.9.47]
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -48,4 +48,4 @@ public extension PrecheckfileProtocol {
48
48
 
49
49
  // Please don't remove the lines below
50
50
  // They are used to detect outdated files
51
- // FastlaneRunnerAPIVersion [0.9.45]
51
+ // FastlaneRunnerAPIVersion [0.9.46]
@@ -37,7 +37,7 @@ class Runner {
37
37
  socketClient.send(rubyCommand: command)
38
38
 
39
39
  let secondsToWait = DispatchTimeInterval.seconds(SocketClient.defaultCommandTimeoutSeconds)
40
- // swiftlint:disable next
40
+ // swiftformat:disable:next redundantSelf
41
41
  let timeoutResult = Self.waitWithPolling(self.executeNext[command.id], toEventually: { $0 == true }, timeout: SocketClient.defaultCommandTimeoutSeconds)
42
42
  executeNext.removeValue(forKey: command.id)
43
43
  let failureMessage = "command didn't execute in: \(SocketClient.defaultCommandTimeoutSeconds) seconds"
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -264,4 +264,4 @@ public extension ScanfileProtocol {
264
264
 
265
265
  // Please don't remove the lines below
266
266
  // They are used to detect outdated files
267
- // FastlaneRunnerAPIVersion [0.9.57]
267
+ // FastlaneRunnerAPIVersion [0.9.58]
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -96,4 +96,4 @@ public extension ScreengrabfileProtocol {
96
96
 
97
97
  // Please don't remove the lines below
98
98
  // They are used to detect outdated files
99
- // FastlaneRunnerAPIVersion [0.9.47]
99
+ // FastlaneRunnerAPIVersion [0.9.48]
@@ -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.166.0
20
+ // Generated with fastlane 2.167.0
@@ -184,4 +184,4 @@ public extension SnapshotfileProtocol {
184
184
 
185
185
  // Please don't remove the lines below
186
186
  // They are used to detect outdated files
187
- // FastlaneRunnerAPIVersion [0.9.41]
187
+ // FastlaneRunnerAPIVersion [0.9.42]
@@ -29,7 +29,7 @@ class SocketClient: NSObject {
29
29
  }
30
30
 
31
31
  static let connectTimeoutSeconds = 2
32
- static let defaultCommandTimeoutSeconds = 10_800 // 3 hours
32
+ static let defaultCommandTimeoutSeconds = 10800 // 3 hours
33
33
  static let doneToken = "done" // TODO: remove these
34
34
  static let cancelToken = "cancelFastlaneRun"
35
35
 
@@ -22,7 +22,7 @@ module FastlaneCore
22
22
  end
23
23
 
24
24
  def self.installed_identies(in_keychain: nil)
25
- install_wwdr_certificate unless wwdr_certificate_installed?
25
+ install_wwdr_certificates unless wwdr_certificates_installed?
26
26
 
27
27
  available = list_available_identities(in_keychain: in_keychain)
28
28
  # Match for this text against word boundaries to avoid edge cases around multiples of 10 identities!
@@ -81,16 +81,21 @@ module FastlaneCore
81
81
  `#{commands.join(' ')}`
82
82
  end
83
83
 
84
- def self.wwdr_certificate_installed?
84
+ def self.wwdr_certificates_installed?
85
85
  certificate_name = "Apple Worldwide Developer Relations Certification Authority"
86
86
  keychain = wwdr_keychain
87
- response = Helper.backticks("security find-certificate -c '#{certificate_name}' #{keychain.shellescape}", print: FastlaneCore::Globals.verbose?)
88
- return response.include?("attributes:")
87
+ response = Helper.backticks("security find-certificate -a -c '#{certificate_name}' #{keychain.shellescape}", print: FastlaneCore::Globals.verbose?)
88
+ certs = response.split("keychain: \"#{keychain}\"").drop(1)
89
+ certs.count == 2
89
90
  end
90
91
 
91
- def self.install_wwdr_certificate
92
- url = 'https://developer.apple.com/certificationauthority/AppleWWDRCA.cer'
93
- file = Tempfile.new('AppleWWDRCA')
92
+ def self.install_wwdr_certificates
93
+ install_wwdr_certificate('https://developer.apple.com/certificationauthority/AppleWWDRCA.cer')
94
+ install_wwdr_certificate('https://www.apple.com/certificateauthority/AppleWWDRCAG3.cer')
95
+ end
96
+
97
+ def self.install_wwdr_certificate(url)
98
+ file = Tempfile.new(File.basename(url))
94
99
  filename = file.path
95
100
  keychain = wwdr_keychain
96
101
  keychain = "-k #{keychain.shellescape}" unless keychain.empty?
@@ -47,7 +47,9 @@ module FastlaneCore
47
47
  def bundle_id(path, keychain_path = nil)
48
48
  profile = parse(path, keychain_path)
49
49
  app_id_prefix = profile["ApplicationIdentifierPrefix"].first
50
- bundle_id = profile["Entitlements"]["application-identifier"].gsub("#{app_id_prefix}.", "")
50
+ entitlements = profile["Entitlements"]
51
+ app_identifier = entitlements["application-identifier"] || entitlements["com.apple.application-identifier"]
52
+ bundle_id = app_identifier.gsub("#{app_id_prefix}.", "")
51
53
  bundle_id
52
54
  rescue
53
55
  UI.error("Unable to extract the Bundle Id from the provided provisioning profile '#{path}'.")
@@ -15,3 +15,11 @@ class String
15
15
  end
16
16
  end
17
17
  end
18
+
19
+ # If a plugin uses the colorize gem, we also want to disable that
20
+ begin
21
+ require 'colorize'
22
+ String.disable_colorization = true
23
+ rescue LoadError
24
+ # Colorize gem is not used by any plugin
25
+ end
@@ -142,7 +142,7 @@ module Gym
142
142
  next unless specified_configuration == build_configuration.name
143
143
 
144
144
  # Catalyst apps will have some build settings that will have a configuration
145
- # that is specfic for macos so going to do our best to capture those
145
+ # that is specific for macos so going to do our best to capture those
146
146
  #
147
147
  # There are other platform filters besides "[sdk=macosx*]" that we could use but
148
148
  # this is the default that Xcode will use so this will also be our default
@@ -252,11 +252,15 @@ module Match
252
252
 
253
253
  self.encryption.encrypt_files if self.encryption
254
254
 
255
- # Now we need to commit and push all this too
256
- message = ["[fastlane]", "Nuked", "files", "for", type.to_s].join(" ")
257
- self.storage.save_changes!(files_to_commit: [],
258
- files_to_delete: files_to_delete,
259
- custom_message: message)
255
+ if files_to_delete.count > 0
256
+ # Now we need to save all this to the storage too, if needed
257
+ message = ["[fastlane]", "Nuked", "files", "for", type.to_s].join(" ")
258
+ self.storage.save_changes!(files_to_commit: [],
259
+ files_to_delete: files_to_delete,
260
+ custom_message: message)
261
+ else
262
+ UI.message("Your storage had no files to be deleted. This happens when you run `nuke` with an empty storage. Nothing to be worried about!")
263
+ end
260
264
  end
261
265
 
262
266
  private
@@ -192,7 +192,7 @@ module Pilot
192
192
  [
193
193
  build.app_version,
194
194
  build.version,
195
- (build.beta_build_metrics || []).map(&:install_count).reduce(:+)
195
+ (build.beta_build_metrics || []).map(&:install_count).compact.reduce(:+)
196
196
  ]
197
197
  end
198
198
 
@@ -273,9 +273,15 @@ module Pilot
273
273
  changelog
274
274
  end
275
275
 
276
+ def self.emoji_regex
277
+ # EmojiRegex::RGIEmoji is now preferred over EmojiRegex::Regex which is deprecated as of 3.2.0
278
+ # https://github.com/ticky/ruby-emoji-regex/releases/tag/v3.2.0
279
+ return defined?(EmojiRegex::RGIEmoji) ? EmojiRegex::RGIEmoji : EmojiRegex::Regex
280
+ end
281
+
276
282
  def self.strip_emoji(changelog)
277
- if changelog && changelog =~ EmojiRegex::Regex
278
- changelog.gsub!(EmojiRegex::Regex, "")
283
+ if changelog && changelog =~ emoji_regex
284
+ changelog.gsub!(emoji_regex, "")
279
285
  UI.important("Emoji symbols have been removed from the changelog, since they're not allowed by Apple.")
280
286
  end
281
287
  changelog
@@ -36,6 +36,15 @@ module Spaceship
36
36
  def post_bulk_beta_tester_assignments(beta_testers: nil)
37
37
  return Spaceship::ConnectAPI.post_bulk_beta_tester_assignments(beta_group_id: id, beta_testers: beta_testers)
38
38
  end
39
+
40
+ def delete!
41
+ return Spaceship::ConnectAPI.delete_beta_group(group_id: id)
42
+ end
43
+
44
+ def fetch_builds
45
+ resps = Spaceship::ConnectAPI.get_builds_for_beta_group(group_id: id).all_pages
46
+ return resps.flat_map(&:to_models)
47
+ end
39
48
  end
40
49
  end
41
50
  end
@@ -214,6 +214,18 @@ module Spaceship
214
214
  test_flight_request_client.post("betaGroups", body)
215
215
  end
216
216
 
217
+ def delete_beta_group(group_id: nil)
218
+ raise "group_id is nil" if group_id.nil?
219
+
220
+ test_flight_request_client.delete("betaGroups/#{group_id}")
221
+ end
222
+
223
+ def get_builds_for_beta_group(group_id: nil)
224
+ raise "group_id is nil" if group_id.nil?
225
+
226
+ test_flight_request_client.get("betaGroups/#{group_id}/builds")
227
+ end
228
+
217
229
  #
218
230
  # betaTesters
219
231
  #
metadata CHANGED
@@ -1,35 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.166.0
4
+ version: 2.167.0
5
5
  platform: ruby
6
6
  authors:
7
- - Andrew McBurney
8
- - Joshua Liebowitz
7
+ - Matthew Ellis
8
+ - Jorge Revuelta H
9
+ - Jérôme Lacoste
9
10
  - Max Ott
10
11
  - Josh Holtz
11
- - Jérôme Lacoste
12
- - Stefan Natchev
13
- - Olivier Halligon
14
- - Jorge Revuelta H
15
- - Jan Piotrowski
16
- - Helmut Januschka
17
- - Matthew Ellis
18
- - Manu Wallner
19
12
  - Aaron Brager
20
- - Jimmy Dee
21
- - Maksym Grebenets
13
+ - Andrew McBurney
22
14
  - Daniel Jankowski
23
- - Luka Mirosevic
24
- - Danielle Tomlinson
25
15
  - Fumiya Nakamura
16
+ - Jimmy Dee
17
+ - Kohki Miki
26
18
  - Iulian Onofrei
19
+ - Manu Wallner
20
+ - Stefan Natchev
27
21
  - Felix Krause
28
- - Kohki Miki
22
+ - Joshua Liebowitz
23
+ - Jan Piotrowski
24
+ - Olivier Halligon
25
+ - Luka Mirosevic
26
+ - Danielle Tomlinson
27
+ - Helmut Januschka
28
+ - Maksym Grebenets
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2020-11-02 00:00:00.000000000 Z
32
+ date: 2020-11-13 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: slack-notifier
@@ -943,7 +943,6 @@ files:
943
943
  - deliver/lib/assets/ScreenshotsHelp
944
944
  - deliver/lib/assets/summary.html.erb
945
945
  - deliver/lib/deliver.rb
946
- - deliver/lib/deliver/.upload_screenshots.rb.swp
947
946
  - deliver/lib/deliver/app_screenshot.rb
948
947
  - deliver/lib/deliver/app_screenshot_iterator.rb
949
948
  - deliver/lib/deliver/commands_generator.rb
@@ -1830,8 +1829,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1830
1829
  - !ruby/object:Gem::Version
1831
1830
  version: '0'
1832
1831
  requirements: []
1833
- rubyforge_project:
1834
- rubygems_version: 2.6.14.4
1832
+ rubygems_version: 3.1.4
1835
1833
  signing_key:
1836
1834
  specification_version: 4
1837
1835
  summary: The easiest way to automate beta deployments and releases for your iOS and