fastlane 2.200.0 → 2.201.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (39) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +100 -93
  3. data/fastlane/lib/fastlane/actions/trainer.rb +49 -0
  4. data/fastlane/lib/fastlane/helper/xcodebuild_formatter_helper.rb +9 -0
  5. data/fastlane/lib/fastlane/tools.rb +2 -1
  6. data/fastlane/lib/fastlane/version.rb +1 -1
  7. data/fastlane/swift/Deliverfile.swift +1 -1
  8. data/fastlane/swift/DeliverfileProtocol.swift +1 -1
  9. data/fastlane/swift/Fastlane.swift +134 -43
  10. data/fastlane/swift/Gymfile.swift +1 -1
  11. data/fastlane/swift/GymfileProtocol.swift +10 -6
  12. data/fastlane/swift/Matchfile.swift +1 -1
  13. data/fastlane/swift/MatchfileProtocol.swift +1 -1
  14. data/fastlane/swift/Precheckfile.swift +1 -1
  15. data/fastlane/swift/PrecheckfileProtocol.swift +1 -1
  16. data/fastlane/swift/Scanfile.swift +1 -1
  17. data/fastlane/swift/ScanfileProtocol.swift +18 -6
  18. data/fastlane/swift/Screengrabfile.swift +1 -1
  19. data/fastlane/swift/ScreengrabfileProtocol.swift +1 -1
  20. data/fastlane/swift/Snapshotfile.swift +1 -1
  21. data/fastlane/swift/SnapshotfileProtocol.swift +9 -5
  22. data/fastlane/swift/formatting/Brewfile.lock.json +13 -13
  23. data/fastlane_core/lib/fastlane_core/ui/fastlane_runner.rb +7 -0
  24. data/gym/lib/gym/generators/build_command_generator.rb +67 -21
  25. data/gym/lib/gym/options.rb +17 -5
  26. data/scan/lib/scan/options.rb +30 -5
  27. data/scan/lib/scan/runner.rb +121 -14
  28. data/scan/lib/scan/test_command_generator.rb +55 -5
  29. data/snapshot/lib/snapshot/options.rb +23 -7
  30. data/snapshot/lib/snapshot/test_command_generator.rb +37 -2
  31. data/trainer/lib/assets/junit.xml.erb +20 -0
  32. data/trainer/lib/trainer/commands_generator.rb +51 -0
  33. data/trainer/lib/trainer/junit_generator.rb +31 -0
  34. data/trainer/lib/trainer/module.rb +10 -0
  35. data/trainer/lib/trainer/options.rb +55 -0
  36. data/trainer/lib/trainer/test_parser.rb +376 -0
  37. data/trainer/lib/trainer/xcresult.rb +403 -0
  38. data/trainer/lib/trainer.rb +7 -0
  39. metadata +29 -18
@@ -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.200.0
20
+ // Generated with fastlane 2.201.0
@@ -104,7 +104,10 @@ public protocol GymfileProtocol: class {
104
104
  /// Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
105
105
  var suppressXcodeOutput: Bool? { get }
106
106
 
107
- /// Disable xcpretty formatting of build output
107
+ /// xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
108
+ var xcodebuildFormatter: String { get }
109
+
110
+ /// **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Disable xcpretty formatting of build output
108
111
  var disableXcpretty: Bool? { get }
109
112
 
110
113
  /// Use the test (RSpec style) format for build output
@@ -122,12 +125,12 @@ public protocol GymfileProtocol: class {
122
125
  /// Have xcpretty create a JSON compilation database at the provided path
123
126
  var xcprettyReportJson: String? { get }
124
127
 
125
- /// Analyze the project build time and store the output in 'culprits.txt' file
126
- var analyzeBuildTime: Bool? { get }
127
-
128
128
  /// Have xcpretty use unicode encoding when reporting builds
129
129
  var xcprettyUtf: Bool? { get }
130
130
 
131
+ /// Analyze the project build time and store the output in 'culprits.txt' file
132
+ var analyzeBuildTime: Bool? { get }
133
+
131
134
  /// Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used
132
135
  var skipProfileDetection: Bool { get }
133
136
 
@@ -182,14 +185,15 @@ public extension GymfileProtocol {
182
185
  var xcargs: String? { return nil }
183
186
  var xcconfig: String? { return nil }
184
187
  var suppressXcodeOutput: Bool? { return nil }
188
+ var xcodebuildFormatter: String { return "xcbeautify" }
185
189
  var disableXcpretty: Bool? { return nil }
186
190
  var xcprettyTestFormat: Bool? { return nil }
187
191
  var xcprettyFormatter: String? { return nil }
188
192
  var xcprettyReportJunit: String? { return nil }
189
193
  var xcprettyReportHtml: String? { return nil }
190
194
  var xcprettyReportJson: String? { return nil }
191
- var analyzeBuildTime: Bool? { return nil }
192
195
  var xcprettyUtf: Bool? { return nil }
196
+ var analyzeBuildTime: Bool? { return nil }
193
197
  var skipProfileDetection: Bool { return false }
194
198
  var xcodebuildCommand: String { return "xcodebuild" }
195
199
  var clonedSourcePackagesPath: String? { return nil }
@@ -200,4 +204,4 @@ public extension GymfileProtocol {
200
204
 
201
205
  // Please don't remove the lines below
202
206
  // They are used to detect outdated files
203
- // FastlaneRunnerAPIVersion [0.9.93]
207
+ // FastlaneRunnerAPIVersion [0.9.94]
@@ -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.200.0
20
+ // Generated with fastlane 2.201.0
@@ -192,4 +192,4 @@ public extension MatchfileProtocol {
192
192
 
193
193
  // Please don't remove the lines below
194
194
  // They are used to detect outdated files
195
- // FastlaneRunnerAPIVersion [0.9.87]
195
+ // FastlaneRunnerAPIVersion [0.9.88]
@@ -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.200.0
20
+ // Generated with fastlane 2.201.0
@@ -52,4 +52,4 @@ public extension PrecheckfileProtocol {
52
52
 
53
53
  // Please don't remove the lines below
54
54
  // They are used to detect outdated files
55
- // FastlaneRunnerAPIVersion [0.9.86]
55
+ // FastlaneRunnerAPIVersion [0.9.87]
@@ -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.200.0
20
+ // Generated with fastlane 2.201.0
@@ -80,9 +80,6 @@ public protocol ScanfileProtocol: class {
80
80
  /// Should the HTML report be opened when tests are completed?
81
81
  var openReport: Bool { get }
82
82
 
83
- /// Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
84
- var disableXcpretty: Bool? { get }
85
-
86
83
  /// The directory in which all reports will be stored
87
84
  var outputDirectory: String { get }
88
85
 
@@ -104,9 +101,21 @@ public protocol ScanfileProtocol: class {
104
101
  /// Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path
105
102
  var suppressXcodeOutput: Bool? { get }
106
103
 
107
- /// A custom xcpretty formatter to use
104
+ /// xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
105
+ var xcodebuildFormatter: String { get }
106
+
107
+ /// Remove retry attempts from test results table and the JUnit report (if not using xcpretty)
108
+ var outputRemoveRetryAttempts: Bool { get }
109
+
110
+ /// **DEPRECATED!** Use `output_style: 'raw'` instead - Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table
111
+ var disableXcpretty: Bool? { get }
112
+
113
+ /// **DEPRECATED!** Use 'xcpretty_formatter' instead - A custom xcpretty formatter to use
108
114
  var formatter: String? { get }
109
115
 
116
+ /// A custom xcpretty formatter to use
117
+ var xcprettyFormatter: String? { get }
118
+
110
119
  /// Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')
111
120
  var xcprettyArgs: String? { get }
112
121
 
@@ -246,7 +255,6 @@ public extension ScanfileProtocol {
246
255
  var addressSanitizer: Bool? { return nil }
247
256
  var threadSanitizer: Bool? { return nil }
248
257
  var openReport: Bool { return false }
249
- var disableXcpretty: Bool? { return nil }
250
258
  var outputDirectory: String { return "./test_output" }
251
259
  var outputStyle: String? { return nil }
252
260
  var outputTypes: String { return "html,junit" }
@@ -254,7 +262,11 @@ public extension ScanfileProtocol {
254
262
  var buildlogPath: String { return "~/Library/Logs/scan" }
255
263
  var includeSimulatorLogs: Bool { return false }
256
264
  var suppressXcodeOutput: Bool? { return nil }
265
+ var xcodebuildFormatter: String { return "xcbeautify" }
266
+ var outputRemoveRetryAttempts: Bool { return false }
267
+ var disableXcpretty: Bool? { return nil }
257
268
  var formatter: String? { return nil }
269
+ var xcprettyFormatter: String? { return nil }
258
270
  var xcprettyArgs: String? { return nil }
259
271
  var derivedDataPath: String? { return nil }
260
272
  var shouldZipBuildProducts: Bool { return false }
@@ -296,4 +308,4 @@ public extension ScanfileProtocol {
296
308
 
297
309
  // Please don't remove the lines below
298
310
  // They are used to detect outdated files
299
- // FastlaneRunnerAPIVersion [0.9.98]
311
+ // FastlaneRunnerAPIVersion [0.9.99]
@@ -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.200.0
20
+ // Generated with fastlane 2.201.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.88]
99
+ // FastlaneRunnerAPIVersion [0.9.89]
@@ -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.200.0
20
+ // Generated with fastlane 2.201.0
@@ -86,9 +86,6 @@ public protocol SnapshotfileProtocol: class {
86
86
  /// The configuration to use when building the app. Defaults to 'Release'
87
87
  var configuration: String? { get }
88
88
 
89
- /// Additional xcpretty arguments
90
- var xcprettyArgs: String? { get }
91
-
92
89
  /// The SDK that should be used for building the application
93
90
  var sdk: String? { get }
94
91
 
@@ -137,6 +134,12 @@ public protocol SnapshotfileProtocol: class {
137
134
  /// Array of strings matching Test Bundle/Test Suite/Test Cases to skip
138
135
  var skipTesting: String? { get }
139
136
 
137
+ /// xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)
138
+ var xcodebuildFormatter: String { get }
139
+
140
+ /// **DEPRECATED!** Use `xcodebuild_formatter: ''` instead - Additional xcpretty arguments
141
+ var xcprettyArgs: String? { get }
142
+
140
143
  /// Disable xcpretty formatting of build
141
144
  var disableXcpretty: Bool? { get }
142
145
 
@@ -176,7 +179,6 @@ public extension SnapshotfileProtocol {
176
179
  var clean: Bool { return false }
177
180
  var testWithoutBuilding: Bool? { return nil }
178
181
  var configuration: String? { return nil }
179
- var xcprettyArgs: String? { return nil }
180
182
  var sdk: String? { return nil }
181
183
  var scheme: String? { return nil }
182
184
  var numberOfRetries: Int { return 1 }
@@ -193,6 +195,8 @@ public extension SnapshotfileProtocol {
193
195
  var testplan: String? { return nil }
194
196
  var onlyTesting: String? { return nil }
195
197
  var skipTesting: String? { return nil }
198
+ var xcodebuildFormatter: String { return "xcbeautify" }
199
+ var xcprettyArgs: String? { return nil }
196
200
  var disableXcpretty: Bool? { return nil }
197
201
  var suppressXcodeOutput: Bool? { return nil }
198
202
  var useSystemScm: Bool { return false }
@@ -200,4 +204,4 @@ public extension SnapshotfileProtocol {
200
204
 
201
205
  // Please don't remove the lines below
202
206
  // They are used to detect outdated files
203
- // FastlaneRunnerAPIVersion [0.9.82]
207
+ // FastlaneRunnerAPIVersion [0.9.83]
@@ -2,35 +2,35 @@
2
2
  "entries": {
3
3
  "brew": {
4
4
  "swiftformat": {
5
- "version": "0.49.1",
5
+ "version": "0.49.2",
6
6
  "bottle": {
7
7
  "rebuild": 0,
8
8
  "root_url": "https://ghcr.io/v2/homebrew/core",
9
9
  "files": {
10
10
  "arm64_monterey": {
11
11
  "cellar": ":any_skip_relocation",
12
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:c43caffb4d2cf9546b0a8fa732ffe5d95b1b1fd7ab03f1c5da39c8e7a0e8ecb4",
13
- "sha256": "c43caffb4d2cf9546b0a8fa732ffe5d95b1b1fd7ab03f1c5da39c8e7a0e8ecb4"
12
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:2279db95259ddbc7ad83e47f5bbf8c308db55b74d5464ac79a027bd33138b023",
13
+ "sha256": "2279db95259ddbc7ad83e47f5bbf8c308db55b74d5464ac79a027bd33138b023"
14
14
  },
15
15
  "arm64_big_sur": {
16
16
  "cellar": ":any_skip_relocation",
17
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:ad0ce5fc15fe1d339d366ece18694fdc1d14021684462a126ed20b537a1a9bf5",
18
- "sha256": "ad0ce5fc15fe1d339d366ece18694fdc1d14021684462a126ed20b537a1a9bf5"
17
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:2f6bddbef7d750d6ed546ed5decd4d54d439f16009491bdb4e4999c99d877bcf",
18
+ "sha256": "2f6bddbef7d750d6ed546ed5decd4d54d439f16009491bdb4e4999c99d877bcf"
19
19
  },
20
20
  "monterey": {
21
21
  "cellar": ":any_skip_relocation",
22
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:33652b8015d31dbe45e00bdc598f1b228cb63c7083b90137fdec66318a88010f",
23
- "sha256": "33652b8015d31dbe45e00bdc598f1b228cb63c7083b90137fdec66318a88010f"
22
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:190bf822a188ec8e8be754de2fcd34166ffb07bbd40d67385653d898a251b167",
23
+ "sha256": "190bf822a188ec8e8be754de2fcd34166ffb07bbd40d67385653d898a251b167"
24
24
  },
25
25
  "big_sur": {
26
26
  "cellar": ":any_skip_relocation",
27
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:f0ad88e5594a6a3e5a35834a9a22473a05511375942dbb046d1085cc537d60b8",
28
- "sha256": "f0ad88e5594a6a3e5a35834a9a22473a05511375942dbb046d1085cc537d60b8"
27
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:fe294ff0fa69548876a70ef7aaf30b7221a43adc9f75f7c157c6f881089da6eb",
28
+ "sha256": "fe294ff0fa69548876a70ef7aaf30b7221a43adc9f75f7c157c6f881089da6eb"
29
29
  },
30
30
  "catalina": {
31
31
  "cellar": ":any_skip_relocation",
32
- "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:564f5daf9cd82407843aed590bd4190f3e5aaa73a30b3bc8ae07135f1319ac97",
33
- "sha256": "564f5daf9cd82407843aed590bd4190f3e5aaa73a30b3bc8ae07135f1319ac97"
32
+ "url": "https://ghcr.io/v2/homebrew/core/swiftformat/blobs/sha256:2a174bf9c47a070b1fcaa32c066cd7c82604fc428db952f11c9bf1e4448c567a",
33
+ "sha256": "2a174bf9c47a070b1fcaa32c066cd7c82604fc428db952f11c9bf1e4448c567a"
34
34
  }
35
35
  }
36
36
  }
@@ -56,9 +56,9 @@
56
56
  "macOS": "11.6"
57
57
  },
58
58
  "monterey": {
59
- "HOMEBREW_VERSION": "3.3.10-21-g3ba6afb",
59
+ "HOMEBREW_VERSION": "3.3.11-80-g5ee14b9",
60
60
  "HOMEBREW_PREFIX": "/opt/homebrew",
61
- "Homebrew/homebrew-core": "54f307bcd04cec374c7fd3f22fe7e6b13f1ad783",
61
+ "Homebrew/homebrew-core": "9ca1b8fa2865504f50fcdbe679417daedfa274cc",
62
62
  "CLT": "13.1.0.0.1.1633545042",
63
63
  "Xcode": "13.2.1",
64
64
  "macOS": "12.0.1"
@@ -114,6 +114,13 @@ module Commander
114
114
  action_launch_context = FastlaneCore::ActionLaunchContext.context_for_action_name(@program[:name], fastlane_client_language: fastlane_client_language, args: ARGV)
115
115
  FastlaneCore.session.action_launched(launch_context: action_launch_context)
116
116
 
117
+ # Trainer has been added to fastlane as of 2.201.0
118
+ # We need to make sure that the trainer fastlane plugin is no longer installed
119
+ # to avoid any clashes
120
+ if Gem::Specification.any? { |s| (s.name == 'fastlane-plugin-trainer') && Gem::Requirement.default =~ (s.version) }
121
+ FastlaneCore::UI.user_error!("Migration Needed: As of 2.201.0, trainer is included in fastlane. Please remove the trainer plugin from your Gemfile or Pluginfile (or with 'gem uninstall fastlane-plugin-trainer') - More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/")
122
+ end
123
+
117
124
  return_value = run_active_command
118
125
 
119
126
  action_completed(@program[:name], status: FastlaneCore::ActionCompletionStatus::SUCCESS)
@@ -72,32 +72,78 @@ module Gym
72
72
  def pipe
73
73
  pipe = []
74
74
  pipe << "| tee #{xcodebuild_log_path.shellescape}"
75
- unless Gym.config[:disable_xcpretty]
76
- formatter = Gym.config[:xcpretty_formatter]
77
- pipe << "| xcpretty"
78
- pipe << " --test" if Gym.config[:xcpretty_test_format]
79
- pipe << " --no-color" if Helper.colors_disabled?
80
- pipe << " --formatter " if formatter
81
- pipe << formatter if formatter
82
- pipe << "--utf" if Gym.config[:xcpretty_utf]
83
- report_output_junit = Gym.config[:xcpretty_report_junit]
84
- report_output_html = Gym.config[:xcpretty_report_html]
85
- report_output_json = Gym.config[:xcpretty_report_json]
86
- if report_output_junit
87
- pipe << " --report junit --output "
88
- pipe << report_output_junit.shellescape
89
- elsif report_output_html
90
- pipe << " --report html --output "
91
- pipe << report_output_html.shellescape
92
- elsif report_output_json
93
- pipe << " --report json-compilation-database --output "
94
- pipe << report_output_json.shellescape
95
- end
75
+
76
+ formatter = Gym.config[:xcodebuild_formatter].chomp
77
+ options = legacy_xcpretty_options
78
+
79
+ if Gym.config[:disable_xcpretty] || formatter == ''
80
+ UI.verbose("Not using an xcodebuild formatter")
81
+ elsif !options.empty?
82
+ UI.important("Detected legacy xcpretty being used so formatting wth xcpretty")
83
+ UI.important("Option(s) used: #{options.join(', ')}")
84
+ pipe += pipe_xcpretty
85
+ elsif formatter == 'xcpretty'
86
+ pipe += pipe_xcpretty
87
+ elsif formatter == 'xcbeautify'
88
+ pipe += pipe_xcbeautify
89
+ else
90
+ pipe << "| #{formatter}"
96
91
  end
92
+
97
93
  pipe << "> /dev/null" if Gym.config[:suppress_xcode_output]
98
94
  pipe
99
95
  end
100
96
 
97
+ def pipe_xcbeautify
98
+ pipe = ['| xcbeautify']
99
+
100
+ if FastlaneCore::Helper.colors_disabled?
101
+ pipe << '--disable-colored-output'
102
+ end
103
+
104
+ return pipe
105
+ end
106
+
107
+ def legacy_xcpretty_options
108
+ options = []
109
+
110
+ options << "xcpretty_test_format" if Gym.config[:xcpretty_test_format]
111
+ options << "xcpretty_formatter" if Gym.config[:xcpretty_formatter]
112
+ options << "xcpretty_report_junit" if Gym.config[:xcpretty_report_junit]
113
+ options << "xcpretty_report_html" if Gym.config[:xcpretty_report_html]
114
+ options << "xcpretty_report_json" if Gym.config[:xcpretty_report_json]
115
+ options << "xcpretty_utf" if Gym.config[:xcpretty_utf]
116
+
117
+ return options
118
+ end
119
+
120
+ def pipe_xcpretty
121
+ pipe = []
122
+
123
+ formatter = Gym.config[:xcpretty_formatter]
124
+ pipe << "| xcpretty"
125
+ pipe << " --test" if Gym.config[:xcpretty_test_format]
126
+ pipe << " --no-color" if Helper.colors_disabled?
127
+ pipe << " --formatter " if formatter
128
+ pipe << formatter if formatter
129
+ pipe << "--utf" if Gym.config[:xcpretty_utf]
130
+ report_output_junit = Gym.config[:xcpretty_report_junit]
131
+ report_output_html = Gym.config[:xcpretty_report_html]
132
+ report_output_json = Gym.config[:xcpretty_report_json]
133
+ if report_output_junit
134
+ pipe << " --report junit --output "
135
+ pipe << report_output_junit.shellescape
136
+ elsif report_output_html
137
+ pipe << " --report html --output "
138
+ pipe << report_output_html.shellescape
139
+ elsif report_output_json
140
+ pipe << " --report json-compilation-database --output "
141
+ pipe << report_output_json.shellescape
142
+ end
143
+
144
+ pipe
145
+ end
146
+
101
147
  def post_build
102
148
  commands = []
103
149
  commands << %{grep -E '^[0-9.]+ms' #{xcodebuild_log_path.shellescape} | grep -vE '^0\.[0-9]' | sort -nr > culprits.txt} if Gym.config[:analyze_build_time]
@@ -1,4 +1,5 @@
1
1
  require 'fastlane_core/configuration/config_item'
2
+ require 'fastlane/helper/xcodebuild_formatter_helper'
2
3
  require 'credentials_manager/appfile_config'
3
4
  require_relative 'module'
4
5
 
@@ -230,8 +231,18 @@ module Gym
230
231
  description: "Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path",
231
232
  optional: true,
232
233
  type: Boolean),
234
+
235
+ FastlaneCore::ConfigItem.new(key: :xcodebuild_formatter,
236
+ env_names: ["GYM_XCODEBUILD_FORMATTER", "FASTLANE_XCODEBUILD_FORMATTER"],
237
+ description: "xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)",
238
+ type: String,
239
+ default_value: Fastlane::Helper::XcodebuildFormatterHelper.xcbeautify_installed? ? 'xcbeautify' : 'xcpretty',
240
+ default_value_dynamic: true),
241
+
242
+ # xcpretty
233
243
  FastlaneCore::ConfigItem.new(key: :disable_xcpretty,
234
244
  env_name: "DISABLE_XCPRETTY",
245
+ deprecated: "Use `xcodebuild_formatter: ''` instead",
235
246
  description: "Disable xcpretty formatting of build output",
236
247
  optional: true,
237
248
  type: Boolean),
@@ -259,16 +270,17 @@ module Gym
259
270
  env_name: "XCPRETTY_REPORT_JSON",
260
271
  description: "Have xcpretty create a JSON compilation database at the provided path",
261
272
  optional: true),
262
- FastlaneCore::ConfigItem.new(key: :analyze_build_time,
263
- env_name: "GYM_ANALYZE_BUILD_TIME",
264
- description: "Analyze the project build time and store the output in 'culprits.txt' file",
265
- optional: true,
266
- type: Boolean),
267
273
  FastlaneCore::ConfigItem.new(key: :xcpretty_utf,
268
274
  env_name: "XCPRETTY_UTF",
269
275
  description: "Have xcpretty use unicode encoding when reporting builds",
270
276
  optional: true,
271
277
  type: Boolean),
278
+
279
+ FastlaneCore::ConfigItem.new(key: :analyze_build_time,
280
+ env_name: "GYM_ANALYZE_BUILD_TIME",
281
+ description: "Analyze the project build time and store the output in 'culprits.txt' file",
282
+ optional: true,
283
+ type: Boolean),
272
284
  FastlaneCore::ConfigItem.new(key: :skip_profile_detection,
273
285
  env_name: "GYM_SKIP_PROFILE_DETECTION",
274
286
  description: "Do not try to build a profile mapping from the xcodeproj. Match or a manually provided mapping should be used",
@@ -1,4 +1,5 @@
1
1
  require 'fastlane_core/configuration/config_item'
2
+ require 'fastlane/helper/xcodebuild_formatter_helper'
2
3
  require 'credentials_manager/appfile_config'
3
4
  require_relative 'module'
4
5
 
@@ -214,11 +215,7 @@ module Scan
214
215
  description: "Should the HTML report be opened when tests are completed?",
215
216
  is_string: false,
216
217
  default_value: false),
217
- FastlaneCore::ConfigItem.new(key: :disable_xcpretty,
218
- env_name: "SCAN_DISABLE_XCPRETTY",
219
- description: "Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table",
220
- type: Boolean,
221
- optional: true),
218
+
222
219
  FastlaneCore::ConfigItem.new(key: :output_directory,
223
220
  short_option: "-o",
224
221
  env_name: "SCAN_OUTPUT_DIRECTORY",
@@ -227,6 +224,7 @@ module Scan
227
224
  code_gen_default_value: "./test_output",
228
225
  default_value: File.join(containing, "test_output"),
229
226
  default_value_dynamic: true),
227
+
230
228
  FastlaneCore::ConfigItem.new(key: :output_style,
231
229
  short_option: "-b",
232
230
  env_name: "SCAN_OUTPUT_STYLE",
@@ -263,9 +261,35 @@ module Scan
263
261
  description: "Suppress the output of xcodebuild to stdout. Output is still saved in buildlog_path",
264
262
  optional: true,
265
263
  type: Boolean),
264
+
265
+ FastlaneCore::ConfigItem.new(key: :xcodebuild_formatter,
266
+ env_names: ["SCAN_XCODEBUILD_FORMATTER", "FASTLANE_XCODEBUILD_FORMATTER"],
267
+ description: "xcodebuild formatter to use (ex: 'xcbeautify', 'xcbeautify --quieter', 'xcpretty', 'xcpretty -test'). Use empty string (ex: '') to disable any formatter (More information: https://docs.fastlane.tools/best-practices/xcodebuild-formatters/)",
268
+ type: String,
269
+ default_value: Fastlane::Helper::XcodebuildFormatterHelper.xcbeautify_installed? ? 'xcbeautify' : 'xcpretty',
270
+ default_value_dynamic: true),
271
+ FastlaneCore::ConfigItem.new(key: :output_remove_retry_attempts,
272
+ env_name: "SCAN_OUTPUT_REMOVE_RETRY_ATTEMPS",
273
+ description: "Remove retry attempts from test results table and the JUnit report (if not using xcpretty)",
274
+ type: Boolean,
275
+ default_value: false),
276
+
277
+ # xcpretty
278
+ FastlaneCore::ConfigItem.new(key: :disable_xcpretty,
279
+ env_name: "SCAN_DISABLE_XCPRETTY",
280
+ deprecated: "Use `output_style: 'raw'` instead",
281
+ description: "Disable xcpretty formatting of build, similar to `output_style='raw'` but this will also skip the test results table",
282
+ type: Boolean,
283
+ optional: true),
266
284
  FastlaneCore::ConfigItem.new(key: :formatter,
267
285
  short_option: "-n",
268
286
  env_name: "SCAN_FORMATTER",
287
+ deprecated: "Use 'xcpretty_formatter' instead",
288
+ description: "A custom xcpretty formatter to use",
289
+ optional: true),
290
+ FastlaneCore::ConfigItem.new(key: :xcpretty_formatter,
291
+ short_option: "-N",
292
+ env_name: "SCAN_XCPRETTY_FORMATTER",
269
293
  description: "A custom xcpretty formatter to use",
270
294
  optional: true),
271
295
  FastlaneCore::ConfigItem.new(key: :xcpretty_args,
@@ -273,6 +297,7 @@ module Scan
273
297
  description: "Pass in xcpretty additional command line arguments (e.g. '--test --no-color' or '--tap --no-utf')",
274
298
  type: String,
275
299
  optional: true),
300
+
276
301
  FastlaneCore::ConfigItem.new(key: :derived_data_path,
277
302
  short_option: "-j",
278
303
  env_name: "SCAN_DERIVED_DATA_PATH",