fastlane 2.165.0 → 2.166.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 (36) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +78 -78
  3. data/cert/lib/cert/runner.rb +1 -1
  4. data/deliver/lib/deliver/.upload_screenshots.rb.swp +0 -0
  5. data/fastlane/lib/fastlane/actions/actions_helper.rb +1 -1
  6. data/fastlane/lib/fastlane/actions/appledoc.rb +1 -1
  7. data/fastlane/lib/fastlane/actions/docs/capture_ios_screenshots.md +4 -0
  8. data/fastlane/lib/fastlane/actions/update_fastlane.rb +24 -8
  9. data/fastlane/lib/fastlane/cli_tools_distributor.rb +1 -1
  10. data/fastlane/lib/fastlane/swift_fastlane_function.rb +1 -1
  11. data/fastlane/lib/fastlane/version.rb +1 -1
  12. data/fastlane/swift/Deliverfile.swift +1 -1
  13. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  14. data/fastlane/swift/Fastlane.swift +7 -1
  15. data/fastlane/swift/Gymfile.swift +1 -1
  16. data/fastlane/swift/GymfileProtocol.swift +1 -1
  17. data/fastlane/swift/Matchfile.swift +1 -1
  18. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  19. data/fastlane/swift/Precheckfile.swift +1 -1
  20. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  21. data/fastlane/swift/Scanfile.swift +1 -1
  22. data/fastlane/swift/ScanfileProtocol.swift +5 -1
  23. data/fastlane/swift/Screengrabfile.swift +1 -1
  24. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  25. data/fastlane/swift/Snapshotfile.swift +1 -1
  26. data/fastlane/swift/SnapshotfileProtocol.swift +1 -1
  27. data/fastlane_core/lib/fastlane_core/helper.rb +9 -1
  28. data/fastlane_core/lib/fastlane_core/itunes_transporter.rb +3 -3
  29. data/scan/lib/scan/detect_values.rb +3 -1
  30. data/scan/lib/scan/module.rb +4 -0
  31. data/scan/lib/scan/options.rb +9 -0
  32. data/snapshot/lib/snapshot/test_command_generator.rb +1 -1
  33. data/snapshot/lib/snapshot/test_command_generator_base.rb +3 -1
  34. data/snapshot/lib/snapshot/test_command_generator_xcode_8.rb +1 -1
  35. data/supply/lib/supply.rb +1 -1
  36. metadata +20 -18
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA256:
3
- metadata.gz: 314c607226cc1a8a4f1c7e23e6087f11ba72d05d1b95c55b4dc2477bc1a7edbe
4
- data.tar.gz: 211a75deb1403c2d94ee7542b48f361e88780251539d5fb57384da76f8914549
2
+ SHA1:
3
+ metadata.gz: a087d077b77ba7df4a5d383d8d607aeda9f3b67e
4
+ data.tar.gz: 31a97905c7bf5685558efd65933780580b69f470
5
5
  SHA512:
6
- metadata.gz: 05e5e851c42e0ca60579a9a1379414f7d9e8d047657bdeb4d0bbf8714d5408fdd7e9d3dda15d6665ee5c886f92050d64265175baf0949d8ce0e61834ecabcc22
7
- data.tar.gz: 6e0b825a88e2ec98614c26033752d7598bc5e52ba76d3b46cd23b9916ea1c92253192564ed6bd29eff6e2a29faebe5afcc29d5417ce89a65cbe35732884f56ea
6
+ metadata.gz: 155ad8ce03e385a45ebcd3ad1757fa6cc25ae2fda564819f01f61af4a2a871b78ee5a1b5510571516dd8e059482a8a53361aedf1ede90619fe64ce42dcde4cca
7
+ data.tar.gz: cc279dfeae02d6b401761bbdc08e0763a8f10fc7b36c9f1a6c5d369502432e87b4ff9bac93a30997dc5709f282e93962942622c65c05c644494f844f3c875b4f
data/README.md CHANGED
@@ -34,11 +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='joshua-liebowitz'>
38
- <a href='https://github.com/taquitos'>
39
- <img src='https://github.com/taquitos.png?size=140'>
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
40
  </a>
41
- <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
41
+ <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
42
42
  </td>
43
43
  <td id='danielle-tomlinson'>
44
44
  <a href='https://github.com/endocrimes'>
@@ -46,11 +46,17 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
46
46
  </a>
47
47
  <h4 align='center'><a href='https://twitter.com/endocrimes'>Danielle Tomlinson</a></h4>
48
48
  </td>
49
- <td id='andrew-mcburney'>
50
- <a href='https://github.com/armcburney'>
51
- <img src='https://github.com/armcburney.png?size=140'>
49
+ <td id='jimmy-dee'>
50
+ <a href='https://github.com/jdee'>
51
+ <img src='https://github.com/jdee.png?size=140'>
52
52
  </a>
53
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
53
+ <h4 align='center'>Jimmy Dee</h4>
54
+ </td>
55
+ <td id='daniel-jankowski'>
56
+ <a href='https://github.com/mollyIV'>
57
+ <img src='https://github.com/mollyIV.png?size=140'>
58
+ </a>
59
+ <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
54
60
  </td>
55
61
  <td id='jorge-revuelta-h'>
56
62
  <a href='https://github.com/minuscorp'>
@@ -58,37 +64,31 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
58
64
  </a>
59
65
  <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
60
66
  </td>
61
- <td id='josh-holtz'>
62
- <a href='https://github.com/joshdholtz'>
63
- <img src='https://github.com/joshdholtz.png?size=140'>
64
- </a>
65
- <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
66
- </td>
67
67
  </tr>
68
68
  <tr>
69
- <td id='max-ott'>
70
- <a href='https://github.com/max-ott'>
71
- <img src='https://github.com/max-ott.png?size=140'>
69
+ <td id='fumiya-nakamura'>
70
+ <a href='https://github.com/nafu'>
71
+ <img src='https://github.com/nafu.png?size=140'>
72
72
  </a>
73
- <h4 align='center'><a href='https://twitter.com/ott_max'>Max Ott</a></h4>
73
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
74
74
  </td>
75
- <td id='felix-krause'>
76
- <a href='https://github.com/KrauseFx'>
77
- <img src='https://github.com/KrauseFx.png?size=140'>
75
+ <td id='manu-wallner'>
76
+ <a href='https://github.com/milch'>
77
+ <img src='https://github.com/milch.png?size=140'>
78
78
  </a>
79
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
79
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
80
80
  </td>
81
- <td id='jan-piotrowski'>
82
- <a href='https://github.com/janpio'>
83
- <img src='https://github.com/janpio.png?size=140'>
81
+ <td id='aaron-brager'>
82
+ <a href='https://github.com/getaaron'>
83
+ <img src='https://github.com/getaaron.png?size=140'>
84
84
  </a>
85
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
85
+ <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
86
86
  </td>
87
- <td id='jérôme-lacoste'>
88
- <a href='https://github.com/lacostej'>
89
- <img src='https://github.com/lacostej.png?size=140'>
87
+ <td id='kohki-miki'>
88
+ <a href='https://github.com/giginet'>
89
+ <img src='https://github.com/giginet.png?size=140'>
90
90
  </a>
91
- <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
91
+ <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
92
92
  </td>
93
93
  <td id='helmut-januschka'>
94
94
  <a href='https://github.com/hjanuschka'>
@@ -98,81 +98,81 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
98
98
  </td>
99
99
  </tr>
100
100
  <tr>
101
- <td id='olivier-halligon'>
102
- <a href='https://github.com/AliSoftware'>
103
- <img src='https://github.com/AliSoftware.png?size=140'>
104
- </a>
105
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
106
- </td>
107
- <td id='iulian-onofrei'>
108
- <a href='https://github.com/revolter'>
109
- <img src='https://github.com/revolter.png?size=140'>
110
- </a>
111
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
112
- </td>
113
101
  <td id='matthew-ellis'>
114
102
  <a href='https://github.com/matthewellis'>
115
103
  <img src='https://github.com/matthewellis.png?size=140'>
116
104
  </a>
117
105
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
118
106
  </td>
119
- <td id='aaron-brager'>
120
- <a href='https://github.com/getaaron'>
121
- <img src='https://github.com/getaaron.png?size=140'>
107
+ <td id='joshua-liebowitz'>
108
+ <a href='https://github.com/taquitos'>
109
+ <img src='https://github.com/taquitos.png?size=140'>
122
110
  </a>
123
- <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
111
+ <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
124
112
  </td>
125
- <td id='jimmy-dee'>
126
- <a href='https://github.com/jdee'>
127
- <img src='https://github.com/jdee.png?size=140'>
113
+ <td id='jan-piotrowski'>
114
+ <a href='https://github.com/janpio'>
115
+ <img src='https://github.com/janpio.png?size=140'>
128
116
  </a>
129
- <h4 align='center'>Jimmy Dee</h4>
117
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
118
+ </td>
119
+ <td id='iulian-onofrei'>
120
+ <a href='https://github.com/revolter'>
121
+ <img src='https://github.com/revolter.png?size=140'>
122
+ </a>
123
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
124
+ </td>
125
+ <td id='maksym-grebenets'>
126
+ <a href='https://github.com/mgrebenets'>
127
+ <img src='https://github.com/mgrebenets.png?size=140'>
128
+ </a>
129
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
130
130
  </td>
131
131
  </tr>
132
132
  <tr>
133
- <td id='daniel-jankowski'>
134
- <a href='https://github.com/mollyIV'>
135
- <img src='https://github.com/mollyIV.png?size=140'>
133
+ <td id='josh-holtz'>
134
+ <a href='https://github.com/joshdholtz'>
135
+ <img src='https://github.com/joshdholtz.png?size=140'>
136
136
  </a>
137
- <h4 align='center'><a href='https://twitter.com/mollyIV'>Daniel Jankowski</a></h4>
137
+ <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
138
138
  </td>
139
- <td id='stefan-natchev'>
140
- <a href='https://github.com/snatchev'>
141
- <img src='https://github.com/snatchev.png?size=140'>
139
+ <td id='jérôme-lacoste'>
140
+ <a href='https://github.com/lacostej'>
141
+ <img src='https://github.com/lacostej.png?size=140'>
142
142
  </a>
143
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
143
+ <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
144
144
  </td>
145
- <td id='manu-wallner'>
146
- <a href='https://github.com/milch'>
147
- <img src='https://github.com/milch.png?size=140'>
145
+ <td id='andrew-mcburney'>
146
+ <a href='https://github.com/armcburney'>
147
+ <img src='https://github.com/armcburney.png?size=140'>
148
148
  </a>
149
- <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
149
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
150
150
  </td>
151
- <td id='luka-mirosevic'>
152
- <a href='https://github.com/lmirosevic'>
153
- <img src='https://github.com/lmirosevic.png?size=140'>
151
+ <td id='felix-krause'>
152
+ <a href='https://github.com/KrauseFx'>
153
+ <img src='https://github.com/KrauseFx.png?size=140'>
154
154
  </a>
155
- <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
155
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
156
156
  </td>
157
- <td id='kohki-miki'>
158
- <a href='https://github.com/giginet'>
159
- <img src='https://github.com/giginet.png?size=140'>
157
+ <td id='olivier-halligon'>
158
+ <a href='https://github.com/AliSoftware'>
159
+ <img src='https://github.com/AliSoftware.png?size=140'>
160
160
  </a>
161
- <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
161
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
162
162
  </td>
163
163
  </tr>
164
164
  <tr>
165
- <td id='maksym-grebenets'>
166
- <a href='https://github.com/mgrebenets'>
167
- <img src='https://github.com/mgrebenets.png?size=140'>
165
+ <td id='stefan-natchev'>
166
+ <a href='https://github.com/snatchev'>
167
+ <img src='https://github.com/snatchev.png?size=140'>
168
168
  </a>
169
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
169
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
170
170
  </td>
171
- <td id='fumiya-nakamura'>
172
- <a href='https://github.com/nafu'>
173
- <img src='https://github.com/nafu.png?size=140'>
171
+ <td id='luka-mirosevic'>
172
+ <a href='https://github.com/lmirosevic'>
173
+ <img src='https://github.com/lmirosevic.png?size=140'>
174
174
  </a>
175
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
175
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
176
176
  </td>
177
177
  </table>
178
178
 
@@ -190,7 +190,7 @@ module Cert
190
190
  begin
191
191
  certificate = Spaceship::ConnectAPI::Certificate.create(
192
192
  certificate_type: certificate_type,
193
- csr_content: csr
193
+ csr_content: csr.to_pem
194
194
  )
195
195
  rescue => ex
196
196
  type_name = (Cert.config[:development] ? "Development" : "Distribution")
@@ -5,7 +5,7 @@ module Fastlane
5
5
  PLATFORM_NAME = :PLATFORM_NAME
6
6
  ENVIRONMENT = :ENVIRONMENT
7
7
 
8
- # A slighly decorated hash that will store and fetch sensitive data
8
+ # A slightly decorated hash that will store and fetch sensitive data
9
9
  # but not display it while iterating keys and values
10
10
  class LaneContextValues < Hash
11
11
  def initialize
@@ -55,7 +55,7 @@ module Fastlane
55
55
 
56
56
  def self.run(params)
57
57
  unless Helper.test?
58
- UI.message("Install using `brew install homebrew/boneyard/appledoc`")
58
+ UI.message("Install using `brew install appledoc`")
59
59
  UI.user_error!("appledoc not installed") if `which appledoc`.length == 0
60
60
  end
61
61
 
@@ -282,6 +282,10 @@ launch_arguments([
282
282
  ])
283
283
  ```
284
284
 
285
+ ## Xcode Environment Variables
286
+
287
+ _snapshot_ includes `FASTLANE_SNAPSHOT=YES` and `FASTLANE_LANGUAGE=<language>` as arguments when executing `xcodebuild`. This means you may use these environment variables in a custom build phase run script to do any additional configuration.
288
+
285
289
  # How does it work?
286
290
 
287
291
  The easiest solution would be to just render the UIWindow into a file. That's not possible because UI Tests don't run on a main thread. So _snapshot_ uses a different approach:
@@ -45,25 +45,31 @@ module Fastlane
45
45
  end
46
46
 
47
47
  # suppress updater output - very noisy
48
- Gem::DefaultUserInteraction.ui = Gem::SilentUI.new
48
+ Gem::DefaultUserInteraction.ui = Gem::SilentUI.new unless FastlaneCore::Globals.verbose?
49
49
 
50
50
  update_needed.each do |tool_info|
51
- tool = tool_info[0]
51
+ tool = self.get_gem_name(tool_info)
52
52
  local_version = Gem::Version.new(highest_versions[tool].version)
53
53
  latest_official_version = FastlaneCore::UpdateChecker.fetch_latest(tool)
54
54
 
55
55
  UI.message("Updating #{tool} from #{local_version.to_s.yellow} to #{latest_official_version.to_s.yellow}... 🚀")
56
56
 
57
- # Approximate_recommendation will create a string like "~> 0.10" from a version 0.10.0, e.g. one that is valid for versions >= 0.10 and <1.0
58
- requirement_version = local_version.approximate_recommendation
59
- updater.update_gem(tool, Gem::Requirement.new(requirement_version))
57
+ if Helper.homebrew?
58
+ Helper.backticks('brew upgrade fastlane')
59
+ else
60
+ # Approximate_recommendation will create a string like "~> 0.10" from a version 0.10.0, e.g. one that is valid for versions >= 0.10 and <1.0
61
+ requirement_version = local_version.approximate_recommendation
62
+ updater.update_gem(tool, Gem::Requirement.new(requirement_version))
63
+ end
60
64
 
61
65
  UI.success("Finished updating #{tool}")
62
66
  end
63
67
 
64
- UI.message("Cleaning up old versions...")
65
- cleaner.options[:args] = tools_to_update
66
- cleaner.execute
68
+ unless Helper.homebrew?
69
+ UI.message("Cleaning up old versions...")
70
+ cleaner.options[:args] = tools_to_update
71
+ cleaner.execute
72
+ end
67
73
 
68
74
  UI.message("fastlane.tools successfully updated! I will now restart myself... 😴")
69
75
 
@@ -71,6 +77,16 @@ module Fastlane
71
77
  exec("FL_NO_UPDATE=true #{$PROGRAM_NAME} #{ARGV.join(' ')}")
72
78
  end
73
79
 
80
+ def self.get_gem_name(tool_info)
81
+ if tool_info.kind_of?(Array)
82
+ return tool_info[0]
83
+ elsif tool_info.respond_to?(:name) # Gem::NameTuple in RubyGems >= 3.1.0
84
+ return tool_info.name
85
+ else
86
+ UI.crash!("Unknown gem update information returned from RubyGems. Please file a new issue for this... 🤷")
87
+ end
88
+ end
89
+
74
90
  def self.description
75
91
  "Makes sure fastlane-tools are up-to-date when running fastlane"
76
92
  end
@@ -125,7 +125,7 @@ module Fastlane
125
125
  # Since loading dotenv should respect additional environments passed using
126
126
  # --env, we must extrat the arguments out of ARGV and process them before
127
127
  # calling into commander. This is required since the ENV must be configured
128
- # before running any other commands in order to correclty respect variables
128
+ # before running any other commands in order to correctly respect variables
129
129
  # like FASTLANE_HIDE_CHANGELOG and FASTLANE_DISABLE_COLORS
130
130
  def load_dot_env
131
131
  env_cl_param = lambda do
@@ -136,7 +136,7 @@ module Fastlane
136
136
  type = "[String]"
137
137
  elsif default_value.kind_of?(Hash)
138
138
  type = "[String : Any]"
139
- # Altough we can have a default value of Integer type, if param_type_override overridden that value, respect it.
139
+ # Although we can have a default value of Integer type, if param_type_override overridden that value, respect it.
140
140
  elsif default_value.kind_of?(Integer)
141
141
  if type == "Double" || type == "Float"
142
142
  begin
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.165.0'.freeze
2
+ VERSION = '2.166.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.165.0
20
+ // Generated with fastlane 2.166.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.48]
259
+ // FastlaneRunnerAPIVersion [0.9.49]
@@ -6077,6 +6077,7 @@ public func rubyVersion() {
6077
6077
  - skipSlack: Don't publish to slack, even when an URL is given
6078
6078
  - slackOnlyOnFailure: Only post on Slack if the tests fail
6079
6079
  - destination: Use only if you're a pro, use the other options instead
6080
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
6080
6081
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
6081
6082
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
6082
6083
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
@@ -6143,6 +6144,7 @@ public func runTests(workspace: String? = nil,
6143
6144
  skipSlack: Bool = false,
6144
6145
  slackOnlyOnFailure: Bool = false,
6145
6146
  destination: Any? = nil,
6147
+ catalystPlatform: String? = nil,
6146
6148
  customReportFileName: String? = nil,
6147
6149
  xcodebuildCommand: String = "env NSUnbufferedIO=YES xcodebuild",
6148
6150
  clonedSourcePackagesPath: String? = nil,
@@ -6207,6 +6209,7 @@ public func runTests(workspace: String? = nil,
6207
6209
  RubyCommand.Argument(name: "skip_slack", value: skipSlack),
6208
6210
  RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
6209
6211
  RubyCommand.Argument(name: "destination", value: destination),
6212
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
6210
6213
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
6211
6214
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
6212
6215
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
@@ -6353,6 +6356,7 @@ public func say(text: Any,
6353
6356
  - skipSlack: Don't publish to slack, even when an URL is given
6354
6357
  - slackOnlyOnFailure: Only post on Slack if the tests fail
6355
6358
  - destination: Use only if you're a pro, use the other options instead
6359
+ - catalystPlatform: Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
6356
6360
  - customReportFileName: **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
6357
6361
  - xcodebuildCommand: Allows for override of the default `xcodebuild` command
6358
6362
  - clonedSourcePackagesPath: Sets a custom path for Swift Package Manager dependencies
@@ -6419,6 +6423,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6419
6423
  skipSlack: Bool = scanfile.skipSlack,
6420
6424
  slackOnlyOnFailure: Bool = scanfile.slackOnlyOnFailure,
6421
6425
  destination: Any? = scanfile.destination,
6426
+ catalystPlatform: Any? = scanfile.catalystPlatform,
6422
6427
  customReportFileName: Any? = scanfile.customReportFileName,
6423
6428
  xcodebuildCommand: Any = scanfile.xcodebuildCommand,
6424
6429
  clonedSourcePackagesPath: Any? = scanfile.clonedSourcePackagesPath,
@@ -6483,6 +6488,7 @@ public func scan(workspace: Any? = scanfile.workspace,
6483
6488
  RubyCommand.Argument(name: "skip_slack", value: skipSlack),
6484
6489
  RubyCommand.Argument(name: "slack_only_on_failure", value: slackOnlyOnFailure),
6485
6490
  RubyCommand.Argument(name: "destination", value: destination),
6491
+ RubyCommand.Argument(name: "catalyst_platform", value: catalystPlatform),
6486
6492
  RubyCommand.Argument(name: "custom_report_file_name", value: customReportFileName),
6487
6493
  RubyCommand.Argument(name: "xcodebuild_command", value: xcodebuildCommand),
6488
6494
  RubyCommand.Argument(name: "cloned_source_packages_path", value: clonedSourcePackagesPath),
@@ -9399,4 +9405,4 @@ public let snapshotfile = Snapshotfile()
9399
9405
 
9400
9406
  // Please don't remove the lines below
9401
9407
  // They are used to detect outdated files
9402
- // FastlaneRunnerAPIVersion [0.9.101]
9408
+ // FastlaneRunnerAPIVersion [0.9.102]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.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.51]
187
+ // FastlaneRunnerAPIVersion [0.9.52]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.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.45]
187
+ // FastlaneRunnerAPIVersion [0.9.46]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.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.44]
51
+ // FastlaneRunnerAPIVersion [0.9.45]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.0
@@ -179,6 +179,9 @@ public protocol ScanfileProtocol: class {
179
179
  /// Use only if you're a pro, use the other options instead
180
180
  var destination: String? { get }
181
181
 
182
+ /// Platform to build when using a Catalyst enabled app. Valid values are: ios, macos
183
+ var catalystPlatform: String? { get }
184
+
182
185
  /// **DEPRECATED!** Use `--output_files` instead - Sets custom full report file name when generating a single report
183
186
  var customReportFileName: String? { get }
184
187
 
@@ -252,6 +255,7 @@ public extension ScanfileProtocol {
252
255
  var skipSlack: Bool { return false }
253
256
  var slackOnlyOnFailure: Bool { return false }
254
257
  var destination: String? { return nil }
258
+ var catalystPlatform: String? { return nil }
255
259
  var customReportFileName: String? { return nil }
256
260
  var xcodebuildCommand: String { return "env NSUnbufferedIO=YES xcodebuild" }
257
261
  var clonedSourcePackagesPath: String? { return nil }
@@ -260,4 +264,4 @@ public extension ScanfileProtocol {
260
264
 
261
265
  // Please don't remove the lines below
262
266
  // They are used to detect outdated files
263
- // FastlaneRunnerAPIVersion [0.9.56]
267
+ // FastlaneRunnerAPIVersion [0.9.57]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.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.46]
99
+ // FastlaneRunnerAPIVersion [0.9.47]
@@ -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.165.0
20
+ // Generated with fastlane 2.166.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.40]
187
+ // FastlaneRunnerAPIVersion [0.9.41]
@@ -203,9 +203,17 @@ module FastlaneCore
203
203
  return File.join(self.itms_path, 'iTMSTransporter')
204
204
  end
205
205
 
206
+ def self.user_defined_itms_path?
207
+ return FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
208
+ end
209
+
210
+ def self.user_defined_itms_path
211
+ return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if self.user_defined_itms_path?
212
+ end
213
+
206
214
  # @return the full path to the iTMSTransporter executable
207
215
  def self.itms_path
208
- return ENV["FASTLANE_ITUNES_TRANSPORTER_PATH"] if FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
216
+ return self.user_defined_itms_path if FastlaneCore::Env.truthy?("FASTLANE_ITUNES_TRANSPORTER_PATH")
209
217
 
210
218
  if self.mac?
211
219
  # First check for manually install iTMSTransporter
@@ -254,7 +254,7 @@ module FastlaneCore
254
254
  class JavaTransporterExecutor < TransporterExecutor
255
255
  def build_upload_command(username, password, source = "/tmp", provider_short_name = "", jwt = nil)
256
256
  use_jwt = !jwt.to_s.empty?
257
- if Helper.mac? && Helper.xcode_at_least?(11)
257
+ if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
258
258
  [
259
259
  ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
260
260
  'xcrun iTMSTransporter',
@@ -294,7 +294,7 @@ module FastlaneCore
294
294
 
295
295
  def build_download_command(username, password, apple_id, destination = "/tmp", provider_short_name = "", jwt = nil)
296
296
  use_jwt = !jwt.to_s.empty?
297
- if Helper.mac? && Helper.xcode_at_least?(11)
297
+ if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
298
298
  [
299
299
  ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
300
300
  'xcrun iTMSTransporter',
@@ -332,7 +332,7 @@ module FastlaneCore
332
332
 
333
333
  def build_provider_ids_command(username, password, jwt = nil)
334
334
  use_jwt = !jwt.to_s.empty?
335
- if Helper.mac? && Helper.xcode_at_least?(11)
335
+ if !Helper.user_defined_itms_path? && Helper.mac? && Helper.xcode_at_least?(11)
336
336
  [
337
337
  ("ITMS_TRANSPORTER_PASSWORD=#{password.shellescape}" unless use_jwt),
338
338
  'xcrun iTMSTransporter',
@@ -209,7 +209,9 @@ module Scan
209
209
  end
210
210
 
211
211
  # building up the destination now
212
- if Scan.devices && Scan.devices.count > 0
212
+ if Scan.building_mac_catalyst_for_mac?
213
+ Scan.config[:destination] = ["platform=macOS,variant=Mac Catalyst"]
214
+ elsif Scan.devices && Scan.devices.count > 0
213
215
  Scan.config[:destination] = Scan.devices.map { |d| "platform=#{d.os_type} Simulator,id=#{d.udid}" }
214
216
  elsif Scan.project.mac_app?
215
217
  Scan.config[:destination] = min_xcode8? ? ["platform=macOS"] : ["platform=OS X"]
@@ -21,6 +21,10 @@ module Scan
21
21
  def scanfile_name
22
22
  "Scanfile"
23
23
  end
24
+
25
+ def building_mac_catalyst_for_mac?
26
+ Scan.project.supports_mac_catalyst? && Scan.config[:catalyst_platform] == "macos"
27
+ end
24
28
  end
25
29
 
26
30
  Helper = FastlaneCore::Helper # you gotta love Ruby: Helper.* should use the Helper class contained in FastlaneCore
@@ -419,6 +419,15 @@ module Scan
419
419
  description: "Use only if you're a pro, use the other options instead",
420
420
  is_string: false,
421
421
  optional: true),
422
+ FastlaneCore::ConfigItem.new(key: :catalyst_platform,
423
+ env_name: "SCAN_CATALYST_PLATFORM",
424
+ description: "Platform to build when using a Catalyst enabled app. Valid values are: ios, macos",
425
+ type: String,
426
+ optional: true,
427
+ verify_block: proc do |value|
428
+ av = %w(ios macos)
429
+ UI.user_error!("Unsupported export_method '#{value}', must be: #{av}") unless av.include?(value)
430
+ end),
422
431
  FastlaneCore::ConfigItem.new(key: :custom_report_file_name,
423
432
  env_name: "SCAN_CUSTOM_REPORT_FILE_NAME",
424
433
  description: "Sets custom full report file name when generating a single report",
@@ -13,7 +13,7 @@ module Snapshot
13
13
  parts << "xcodebuild"
14
14
  parts += options(language, locale)
15
15
  parts += destination(devices)
16
- parts += build_settings
16
+ parts += build_settings(language, locale)
17
17
  parts += actions
18
18
  parts += suffix
19
19
  parts += pipe(log_path: log_path)
@@ -40,11 +40,13 @@ module Snapshot
40
40
  return options
41
41
  end
42
42
 
43
- def build_settings
43
+ def build_settings(language, locale)
44
44
  config = Snapshot.config
45
45
 
46
46
  build_settings = []
47
47
  build_settings << "FASTLANE_SNAPSHOT=YES"
48
+ build_settings << "FASTLANE_LANGUAGE=#{language}" if language
49
+ build_settings << "FASTLANE_LOCALE=#{locale}" if locale
48
50
  build_settings << "TEST_TARGET_NAME=#{config[:test_target_name].shellescape}" if config[:test_target_name]
49
51
 
50
52
  return build_settings
@@ -14,7 +14,7 @@ module Snapshot
14
14
  parts << "xcodebuild"
15
15
  parts += options(language, locale)
16
16
  parts += destination(device_type)
17
- parts += build_settings
17
+ parts += build_settings(language, locale)
18
18
  parts += actions
19
19
  parts += suffix
20
20
  parts += pipe(device_type, language, locale)
@@ -16,7 +16,7 @@ module Supply
16
16
  end
17
17
 
18
18
  AVAILABLE_METADATA_FIELDS = %w(title short_description full_description video)
19
- IMAGES_TYPES = %w(featureGraphic icon promoGraphic tvBanner)
19
+ IMAGES_TYPES = %w(featureGraphic icon tvBanner) # https://developers.google.com/android-publisher/api-ref/rest/v3/AppImageType
20
20
  SCREENSHOT_TYPES = %w(phoneScreenshots sevenInchScreenshots tenInchScreenshots tvScreenshots wearScreenshots)
21
21
 
22
22
  IMAGES_FOLDER_NAME = "images"
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.165.0
4
+ version: 2.166.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jorge Revuelta H
8
- - Matthew Ellis
9
- - Felix Krause
7
+ - Andrew McBurney
8
+ - Joshua Liebowitz
9
+ - Max Ott
10
10
  - Josh Holtz
11
- - Danielle Tomlinson
12
11
  - Jérôme Lacoste
13
- - Kohki Miki
14
- - Maksym Grebenets
12
+ - Stefan Natchev
13
+ - Olivier Halligon
14
+ - Jorge Revuelta H
15
+ - Jan Piotrowski
16
+ - Helmut Januschka
17
+ - Matthew Ellis
18
+ - Manu Wallner
15
19
  - Aaron Brager
16
20
  - Jimmy Dee
17
- - Max Ott
21
+ - Maksym Grebenets
22
+ - Daniel Jankowski
18
23
  - Luka Mirosevic
19
- - Manu Wallner
20
- - Jan Piotrowski
21
- - Stefan Natchev
22
- - Andrew McBurney
24
+ - Danielle Tomlinson
23
25
  - Fumiya Nakamura
24
26
  - Iulian Onofrei
25
- - Olivier Halligon
26
- - Joshua Liebowitz
27
- - Daniel Jankowski
28
- - Helmut Januschka
27
+ - Felix Krause
28
+ - Kohki Miki
29
29
  autorequire:
30
30
  bindir: bin
31
31
  cert_chain: []
32
- date: 2020-10-23 00:00:00.000000000 Z
32
+ date: 2020-11-02 00:00:00.000000000 Z
33
33
  dependencies:
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: slack-notifier
@@ -943,6 +943,7 @@ 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
946
947
  - deliver/lib/deliver/app_screenshot.rb
947
948
  - deliver/lib/deliver/app_screenshot_iterator.rb
948
949
  - deliver/lib/deliver/commands_generator.rb
@@ -1829,7 +1830,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
1829
1830
  - !ruby/object:Gem::Version
1830
1831
  version: '0'
1831
1832
  requirements: []
1832
- rubygems_version: 3.0.6
1833
+ rubyforge_project:
1834
+ rubygems_version: 2.6.14.4
1833
1835
  signing_key:
1834
1836
  specification_version: 4
1835
1837
  summary: The easiest way to automate beta deployments and releases for your iOS and