fastlane 2.165.0 → 2.166.0

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