fastlane 2.94.0.beta.20180501050030 → 2.94.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2284e5c7a58fc0a1faada7883aed8e304db3f056
4
- data.tar.gz: c58a07f28f97f36bfc051dcdca1966f4d9f11acc
3
+ metadata.gz: 47392ec23cfdbf0b1584b24f7dfe93d3bc2a3287
4
+ data.tar.gz: eef9d4ea4ae7fd421df3afa826106b543014de15
5
5
  SHA512:
6
- metadata.gz: ce66ec1ebe8c4a0e7b0b2fb5023ec27c9f022e8c046e1af872d34e112c753e84bf58a8c2e30956f4c9c26db28e3571037cd091919d101937a5e0b4a6984d38c6
7
- data.tar.gz: a9d2e79add396ae29bd18f7e8d4a7c785fde9e578323ec2e98dcf975a3732e9ada4c21b66bf14d213c437aec0c438a85f2a5353a7b4d8343fbb47605039ad23b
6
+ metadata.gz: b0d8972797ad2908bbdfb3b2c7f1c68ecd71cd4344b72b79a59304030947d36aa10d122baad2ca8de3d10f4d037d1cffe37d5eb229b161796da4e07aacddd860
7
+ data.tar.gz: 5a3cd80c30ce9ebbffcd7fe506725d826cf1b069a438b6e556cb35eb81c970f6835795ba3ce5bbb2beb9a917750ab8ae7003a1f842f8df41ec9f5f5d89b7b229
data/README.md CHANGED
@@ -32,93 +32,87 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
32
32
 
33
33
  <table id='team'>
34
34
  <tr>
35
+ <td id='stefan-natchev'>
36
+ <a href='https://github.com/snatchev'>
37
+ <img src='https://github.com/snatchev.png?size=140'>
38
+ </a>
39
+ <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
40
+ </td>
35
41
  <td id='joshua-liebowitz'>
36
42
  <a href='https://github.com/taquitos'>
37
43
  <img src='https://github.com/taquitos.png?size=140'>
38
44
  </a>
39
45
  <h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
40
46
  </td>
41
- <td id='iulian-onofrei'>
42
- <a href='https://github.com/revolter'>
43
- <img src='https://github.com/revolter.png?size=140'>
44
- </a>
45
- <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
46
- </td>
47
47
  <td id='aaron-brager'>
48
48
  <a href='https://github.com/getaaron'>
49
49
  <img src='https://github.com/getaaron.png?size=140'>
50
50
  </a>
51
51
  <h4 align='center'><a href='https://twitter.com/getaaron'>Aaron Brager</a></h4>
52
52
  </td>
53
- <td id='fumiya-nakamura'>
54
- <a href='https://github.com/nafu'>
55
- <img src='https://github.com/nafu.png?size=140'>
56
- </a>
57
- <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
58
- </td>
59
53
  <td id='manu-wallner'>
60
54
  <a href='https://github.com/milch'>
61
55
  <img src='https://github.com/milch.png?size=140'>
62
56
  </a>
63
57
  <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
64
58
  </td>
65
- </tr>
66
- <tr>
67
- <td id='jorge-revuelta-h'>
68
- <a href='https://github.com/minuscorp'>
69
- <img src='https://github.com/minuscorp.png?size=140'>
70
- </a>
71
- <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
72
- </td>
73
- <td id='danielle-tomlinson'>
74
- <a href='https://github.com/DanToml'>
75
- <img src='https://github.com/DanToml.png?size=140'>
76
- </a>
77
- <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
78
- </td>
79
- <td id='jimmy-dee'>
80
- <a href='https://github.com/jdee'>
81
- <img src='https://github.com/jdee.png?size=140'>
82
- </a>
83
- <h4 align='center'>Jimmy Dee</h4>
84
- </td>
85
59
  <td id='helmut-januschka'>
86
60
  <a href='https://github.com/hjanuschka'>
87
61
  <img src='https://github.com/hjanuschka.png?size=140'>
88
62
  </a>
89
63
  <h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
90
64
  </td>
91
- <td id='maksym-grebenets'>
92
- <a href='https://github.com/mgrebenets'>
93
- <img src='https://github.com/mgrebenets.png?size=140'>
94
- </a>
95
- <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
96
- </td>
97
65
  </tr>
98
66
  <tr>
67
+ <td id='jan-piotrowski'>
68
+ <a href='https://github.com/janpio'>
69
+ <img src='https://github.com/janpio.png?size=140'>
70
+ </a>
71
+ <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
72
+ </td>
73
+ <td id='andrew-mcburney'>
74
+ <a href='https://github.com/AndrewMcBurney'>
75
+ <img src='https://github.com/AndrewMcBurney.png?size=140'>
76
+ </a>
77
+ <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
78
+ </td>
99
79
  <td id='jérôme-lacoste'>
100
80
  <a href='https://github.com/lacostej'>
101
81
  <img src='https://github.com/lacostej.png?size=140'>
102
82
  </a>
103
83
  <h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
104
84
  </td>
85
+ <td id='olivier-halligon'>
86
+ <a href='https://github.com/AliSoftware'>
87
+ <img src='https://github.com/AliSoftware.png?size=140'>
88
+ </a>
89
+ <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
90
+ </td>
91
+ <td id='jimmy-dee'>
92
+ <a href='https://github.com/jdee'>
93
+ <img src='https://github.com/jdee.png?size=140'>
94
+ </a>
95
+ <h4 align='center'>Jimmy Dee</h4>
96
+ </td>
97
+ </tr>
98
+ <tr>
105
99
  <td id='kohki-miki'>
106
100
  <a href='https://github.com/giginet'>
107
101
  <img src='https://github.com/giginet.png?size=140'>
108
102
  </a>
109
103
  <h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
110
104
  </td>
111
- <td id='andrew-mcburney'>
112
- <a href='https://github.com/AndrewMcBurney'>
113
- <img src='https://github.com/AndrewMcBurney.png?size=140'>
105
+ <td id='danielle-tomlinson'>
106
+ <a href='https://github.com/DanToml'>
107
+ <img src='https://github.com/DanToml.png?size=140'>
114
108
  </a>
115
- <h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
109
+ <h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
116
110
  </td>
117
- <td id='olivier-halligon'>
118
- <a href='https://github.com/AliSoftware'>
119
- <img src='https://github.com/AliSoftware.png?size=140'>
111
+ <td id='fumiya-nakamura'>
112
+ <a href='https://github.com/nafu'>
113
+ <img src='https://github.com/nafu.png?size=140'>
120
114
  </a>
121
- <h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
115
+ <h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
122
116
  </td>
123
117
  <td id='luka-mirosevic'>
124
118
  <a href='https://github.com/lmirosevic'>
@@ -126,19 +120,37 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
126
120
  </a>
127
121
  <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
128
122
  </td>
123
+ <td id='iulian-onofrei'>
124
+ <a href='https://github.com/revolter'>
125
+ <img src='https://github.com/revolter.png?size=140'>
126
+ </a>
127
+ <h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
128
+ </td>
129
129
  </tr>
130
130
  <tr>
131
+ <td id='felix-krause'>
132
+ <a href='https://github.com/KrauseFx'>
133
+ <img src='https://github.com/KrauseFx.png?size=140'>
134
+ </a>
135
+ <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
136
+ </td>
131
137
  <td id='josh-holtz'>
132
138
  <a href='https://github.com/joshdholtz'>
133
139
  <img src='https://github.com/joshdholtz.png?size=140'>
134
140
  </a>
135
141
  <h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
136
142
  </td>
137
- <td id='stefan-natchev'>
138
- <a href='https://github.com/snatchev'>
139
- <img src='https://github.com/snatchev.png?size=140'>
143
+ <td id='maksym-grebenets'>
144
+ <a href='https://github.com/mgrebenets'>
145
+ <img src='https://github.com/mgrebenets.png?size=140'>
140
146
  </a>
141
- <h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
147
+ <h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
148
+ </td>
149
+ <td id='jorge-revuelta-h'>
150
+ <a href='https://github.com/minuscorp'>
151
+ <img src='https://github.com/minuscorp.png?size=140'>
152
+ </a>
153
+ <h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
142
154
  </td>
143
155
  <td id='matthew-ellis'>
144
156
  <a href='https://github.com/matthewellis'>
@@ -146,18 +158,6 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
146
158
  </a>
147
159
  <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
148
160
  </td>
149
- <td id='felix-krause'>
150
- <a href='https://github.com/KrauseFx'>
151
- <img src='https://github.com/KrauseFx.png?size=140'>
152
- </a>
153
- <h4 align='center'><a href='https://twitter.com/KrauseFx'>Felix Krause</a></h4>
154
- </td>
155
- <td id='jan-piotrowski'>
156
- <a href='https://github.com/janpio'>
157
- <img src='https://github.com/janpio.png?size=140'>
158
- </a>
159
- <h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
160
- </td>
161
161
  </tr>
162
162
  </table>
163
163
 
@@ -18,7 +18,11 @@ module Fastlane
18
18
  user_input = STDIN.gets(end_tag).chomp.gsub(end_tag, "").strip
19
19
  else
20
20
  # Standard one line input
21
- user_input = STDIN.gets.chomp.strip while (user_input || "").length == 0
21
+ if params[:secure_text]
22
+ user_input = STDIN.noecho(&:gets).chomp while (user_input || "").length == 0
23
+ else
24
+ user_input = STDIN.gets.chomp.strip while (user_input || "").length == 0
25
+ end
22
26
  end
23
27
 
24
28
  return user_input
@@ -52,6 +56,10 @@ module Fastlane
52
56
  description: "Is that a boolean question (yes/no)? This will add (y/n) at the end",
53
57
  default_value: false,
54
58
  is_string: false),
59
+ FastlaneCore::ConfigItem.new(key: :secure_text,
60
+ description: "Is that a secure text (yes/no)?",
61
+ default_value: false,
62
+ is_string: false),
55
63
  FastlaneCore::ConfigItem.new(key: :multi_line_end_keyword,
56
64
  description: "Enable multi-line inputs by providing an end text (e.g. 'END') which will stop the user input",
57
65
  optional: true,
@@ -25,15 +25,19 @@ module Fastlane
25
25
  UI.user_error!("Unable to find file '#{build_path}'") unless File.exist?(build_path)
26
26
  build_path = File.expand_path(build_path)
27
27
 
28
- if File.extname(build_path) =~ /\.(ipa|zip)/
28
+ case File.extname(build_path)
29
+ when ".ipa", ".zip"
29
30
  `unzip #{build_path.shellescape} -d #{dir.shellescape} -x '__MACOSX/*' '*.DS_Store'`
30
31
  UI.user_error!("Unable to unzip ipa") unless $? == 0
31
32
  # Adding extra ** for edge-case ipas where Payload directory is nested.
32
33
  app_path = Dir["#{dir}/**/Payload/*.app"].first
34
+ when ".xcarchive"
35
+ app_path = Dir["#{build_path}/Products/Applications/*.app"].first
33
36
  else
34
- app_path = build_path
37
+ app_path = build_path # Assume that input is an app file.
35
38
  end
36
39
 
40
+ UI.user_error!("Unable to find app file") unless app_path && File.exist?(app_path)
37
41
  app_path
38
42
  end
39
43
 
@@ -157,7 +161,7 @@ module Fastlane
157
161
  optional: true),
158
162
  FastlaneCore::ConfigItem.new(key: :build_path,
159
163
  env_name: "FL_VERIFY_BUILD_BUILD_PATH",
160
- description: "Explicitly set the ipa or app path",
164
+ description: "Explicitly set the ipa, app or xcarchive path",
161
165
  conflicting_options: [:ipa_path],
162
166
  optional: true)
163
167
  ]
@@ -24,6 +24,8 @@ module Fastlane
24
24
  end
25
25
 
26
26
  def self.available_options
27
+ return [] unless Helper.mac?
28
+
27
29
  # We call Gem::Specification.find_by_name in many more places than this, but for right now
28
30
  # this is the only place we're having trouble. If there are other reports about RubyGems
29
31
  # 2.6.2 causing problems, we may need to move this code and require it someplace better,
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.94.0.beta.20180501050030'.freeze
2
+ VERSION = '2.94.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
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -2440,10 +2440,12 @@ func produce(username: String,
2440
2440
  @discardableResult func prompt(text: String = "Please enter some text: ",
2441
2441
  ciInput: String = "",
2442
2442
  boolean: Bool = false,
2443
+ secureText: Bool = false,
2443
2444
  multiLineEndKeyword: String? = nil) -> String {
2444
2445
  let command = RubyCommand(commandID: "", methodName: "prompt", className: nil, args: [RubyCommand.Argument(name: "text", value: text),
2445
2446
  RubyCommand.Argument(name: "ci_input", value: ciInput),
2446
2447
  RubyCommand.Argument(name: "boolean", value: boolean),
2448
+ RubyCommand.Argument(name: "secure_text", value: secureText),
2447
2449
  RubyCommand.Argument(name: "multi_line_end_keyword", value: multiLineEndKeyword)])
2448
2450
  return runner.executeCommand(command)
2449
2451
  }
@@ -2591,10 +2593,13 @@ func runTests(workspace: String? = nil,
2591
2593
  buildlogPath: String = "~/Library/Logs/scan",
2592
2594
  includeSimulatorLogs: Bool = false,
2593
2595
  formatter: String? = nil,
2596
+ maxConcurrentSimulators: Int? = nil,
2597
+ disableConcurrentTesting: Bool = false,
2594
2598
  testWithoutBuilding: Bool? = nil,
2595
2599
  buildForTesting: Bool? = nil,
2596
2600
  xctestrun: String? = nil,
2597
2601
  derivedDataPath: String? = nil,
2602
+ shouldZipBuildProducts: Bool = false,
2598
2603
  resultBundle: Bool = false,
2599
2604
  sdk: String? = nil,
2600
2605
  openReport: Bool = false,
@@ -2630,10 +2635,13 @@ func runTests(workspace: String? = nil,
2630
2635
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
2631
2636
  RubyCommand.Argument(name: "include_simulator_logs", value: includeSimulatorLogs),
2632
2637
  RubyCommand.Argument(name: "formatter", value: formatter),
2638
+ RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
2639
+ RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
2633
2640
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
2634
2641
  RubyCommand.Argument(name: "build_for_testing", value: buildForTesting),
2635
2642
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
2636
2643
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
2644
+ RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
2637
2645
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
2638
2646
  RubyCommand.Argument(name: "sdk", value: sdk),
2639
2647
  RubyCommand.Argument(name: "open_report", value: openReport),
@@ -2709,10 +2717,13 @@ func scan(workspace: String? = scanfile.workspace,
2709
2717
  buildlogPath: String = scanfile.buildlogPath,
2710
2718
  includeSimulatorLogs: Bool = scanfile.includeSimulatorLogs,
2711
2719
  formatter: String? = scanfile.formatter,
2720
+ maxConcurrentSimulators: Int? = scanfile.maxConcurrentSimulators,
2721
+ disableConcurrentTesting: Bool = scanfile.disableConcurrentTesting,
2712
2722
  testWithoutBuilding: Bool? = scanfile.testWithoutBuilding,
2713
2723
  buildForTesting: Bool? = scanfile.buildForTesting,
2714
2724
  xctestrun: String? = scanfile.xctestrun,
2715
2725
  derivedDataPath: String? = scanfile.derivedDataPath,
2726
+ shouldZipBuildProducts: Bool = scanfile.shouldZipBuildProducts,
2716
2727
  resultBundle: Bool = scanfile.resultBundle,
2717
2728
  sdk: String? = scanfile.sdk,
2718
2729
  openReport: Bool = scanfile.openReport,
@@ -2748,10 +2759,13 @@ func scan(workspace: String? = scanfile.workspace,
2748
2759
  RubyCommand.Argument(name: "buildlog_path", value: buildlogPath),
2749
2760
  RubyCommand.Argument(name: "include_simulator_logs", value: includeSimulatorLogs),
2750
2761
  RubyCommand.Argument(name: "formatter", value: formatter),
2762
+ RubyCommand.Argument(name: "max_concurrent_simulators", value: maxConcurrentSimulators),
2763
+ RubyCommand.Argument(name: "disable_concurrent_testing", value: disableConcurrentTesting),
2751
2764
  RubyCommand.Argument(name: "test_without_building", value: testWithoutBuilding),
2752
2765
  RubyCommand.Argument(name: "build_for_testing", value: buildForTesting),
2753
2766
  RubyCommand.Argument(name: "xctestrun", value: xctestrun),
2754
2767
  RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
2768
+ RubyCommand.Argument(name: "should_zip_build_products", value: shouldZipBuildProducts),
2755
2769
  RubyCommand.Argument(name: "result_bundle", value: resultBundle),
2756
2770
  RubyCommand.Argument(name: "sdk", value: sdk),
2757
2771
  RubyCommand.Argument(name: "open_report", value: openReport),
@@ -2985,7 +2999,8 @@ func slack(message: String? = nil,
2985
2999
  defaultPayloads: [String]? = nil,
2986
3000
  attachmentProperties: [String : Any] = [:],
2987
3001
  success: Bool = true,
2988
- failOnError: Bool = true) {
3002
+ failOnError: Bool = true,
3003
+ linkNames: Bool = false) {
2989
3004
  let command = RubyCommand(commandID: "", methodName: "slack", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
2990
3005
  RubyCommand.Argument(name: "channel", value: channel),
2991
3006
  RubyCommand.Argument(name: "use_webhook_configured_username_and_icon", value: useWebhookConfiguredUsernameAndIcon),
@@ -2996,7 +3011,8 @@ func slack(message: String? = nil,
2996
3011
  RubyCommand.Argument(name: "default_payloads", value: defaultPayloads),
2997
3012
  RubyCommand.Argument(name: "attachment_properties", value: attachmentProperties),
2998
3013
  RubyCommand.Argument(name: "success", value: success),
2999
- RubyCommand.Argument(name: "fail_on_error", value: failOnError)])
3014
+ RubyCommand.Argument(name: "fail_on_error", value: failOnError),
3015
+ RubyCommand.Argument(name: "link_names", value: linkNames)])
3000
3016
  _ = runner.executeCommand(command)
3001
3017
  }
3002
3018
  func slackTrain() {
@@ -3783,14 +3799,16 @@ func verifyBuild(provisioningType: String? = nil,
3783
3799
  teamName: String? = nil,
3784
3800
  appName: String? = nil,
3785
3801
  bundleIdentifier: String? = nil,
3786
- ipaPath: String? = nil) {
3802
+ ipaPath: String? = nil,
3803
+ buildPath: String? = nil) {
3787
3804
  let command = RubyCommand(commandID: "", methodName: "verify_build", className: nil, args: [RubyCommand.Argument(name: "provisioning_type", value: provisioningType),
3788
3805
  RubyCommand.Argument(name: "provisioning_uuid", value: provisioningUuid),
3789
3806
  RubyCommand.Argument(name: "team_identifier", value: teamIdentifier),
3790
3807
  RubyCommand.Argument(name: "team_name", value: teamName),
3791
3808
  RubyCommand.Argument(name: "app_name", value: appName),
3792
3809
  RubyCommand.Argument(name: "bundle_identifier", value: bundleIdentifier),
3793
- RubyCommand.Argument(name: "ipa_path", value: ipaPath)])
3810
+ RubyCommand.Argument(name: "ipa_path", value: ipaPath),
3811
+ RubyCommand.Argument(name: "build_path", value: buildPath)])
3794
3812
  _ = runner.executeCommand(command)
3795
3813
  }
3796
3814
  func verifyPodKeys() {
@@ -3869,8 +3887,62 @@ func xcodebuild() {
3869
3887
  let command = RubyCommand(commandID: "", methodName: "xcodebuild", className: nil, args: [])
3870
3888
  _ = runner.executeCommand(command)
3871
3889
  }
3872
- func xcov() {
3873
- let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [])
3890
+ func xcov(workspace: String? = nil,
3891
+ project: String? = nil,
3892
+ scheme: String? = nil,
3893
+ configuration: String? = nil,
3894
+ sourceDirectory: String? = nil,
3895
+ derivedDataPath: String? = nil,
3896
+ outputDirectory: String = "./xcov_report",
3897
+ htmlReport: Bool = true,
3898
+ markdownReport: Bool = false,
3899
+ jsonReport: Bool = false,
3900
+ minimumCoveragePercentage: Int = 0,
3901
+ slackUrl: String? = nil,
3902
+ slackChannel: String? = nil,
3903
+ skipSlack: Bool = false,
3904
+ slackUsername: String = "xcov",
3905
+ slackMessage: String = "Your *xcov* coverage report",
3906
+ ignoreFilePath: String = "./.xcovignore",
3907
+ includeTestTargets: Bool = false,
3908
+ excludeTargets: String? = nil,
3909
+ includeTargets: String? = nil,
3910
+ onlyProjectTargets: Bool = false,
3911
+ disableCoveralls: Bool = false,
3912
+ coverallsServiceName: String? = nil,
3913
+ coverallsServiceJobId: String? = nil,
3914
+ coverallsRepoToken: String? = nil,
3915
+ xcconfig: String? = nil,
3916
+ ideFoundationPath: String = "/Applications/Xcode92/Xcode.app/Contents/Developer/../Frameworks/IDEFoundation.framework/Versions/A/IDEFoundation",
3917
+ legacySupport: Bool = false) {
3918
+ let command = RubyCommand(commandID: "", methodName: "xcov", className: nil, args: [RubyCommand.Argument(name: "workspace", value: workspace),
3919
+ RubyCommand.Argument(name: "project", value: project),
3920
+ RubyCommand.Argument(name: "scheme", value: scheme),
3921
+ RubyCommand.Argument(name: "configuration", value: configuration),
3922
+ RubyCommand.Argument(name: "source_directory", value: sourceDirectory),
3923
+ RubyCommand.Argument(name: "derived_data_path", value: derivedDataPath),
3924
+ RubyCommand.Argument(name: "output_directory", value: outputDirectory),
3925
+ RubyCommand.Argument(name: "html_report", value: htmlReport),
3926
+ RubyCommand.Argument(name: "markdown_report", value: markdownReport),
3927
+ RubyCommand.Argument(name: "json_report", value: jsonReport),
3928
+ RubyCommand.Argument(name: "minimum_coverage_percentage", value: minimumCoveragePercentage),
3929
+ RubyCommand.Argument(name: "slack_url", value: slackUrl),
3930
+ RubyCommand.Argument(name: "slack_channel", value: slackChannel),
3931
+ RubyCommand.Argument(name: "skip_slack", value: skipSlack),
3932
+ RubyCommand.Argument(name: "slack_username", value: slackUsername),
3933
+ RubyCommand.Argument(name: "slack_message", value: slackMessage),
3934
+ RubyCommand.Argument(name: "ignore_file_path", value: ignoreFilePath),
3935
+ RubyCommand.Argument(name: "include_test_targets", value: includeTestTargets),
3936
+ RubyCommand.Argument(name: "exclude_targets", value: excludeTargets),
3937
+ RubyCommand.Argument(name: "include_targets", value: includeTargets),
3938
+ RubyCommand.Argument(name: "only_project_targets", value: onlyProjectTargets),
3939
+ RubyCommand.Argument(name: "disable_coveralls", value: disableCoveralls),
3940
+ RubyCommand.Argument(name: "coveralls_service_name", value: coverallsServiceName),
3941
+ RubyCommand.Argument(name: "coveralls_service_job_id", value: coverallsServiceJobId),
3942
+ RubyCommand.Argument(name: "coveralls_repo_token", value: coverallsRepoToken),
3943
+ RubyCommand.Argument(name: "xcconfig", value: xcconfig),
3944
+ RubyCommand.Argument(name: "ideFoundationPath", value: ideFoundationPath),
3945
+ RubyCommand.Argument(name: "legacy_support", value: legacySupport)])
3874
3946
  _ = runner.executeCommand(command)
3875
3947
  }
3876
3948
  func xctest() {
@@ -3947,4 +4019,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
3947
4019
  let snapshotfile: Snapshotfile = Snapshotfile()
3948
4020
  // Please don't remove the lines below
3949
4021
  // They are used to detect outdated files
3950
- // FastlaneRunnerAPIVersion [0.9.15]
4022
+ // FastlaneRunnerAPIVersion [0.9.16]
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -17,10 +17,13 @@ protocol ScanfileProtocol: class {
17
17
  var buildlogPath: String { get }
18
18
  var includeSimulatorLogs: Bool { get }
19
19
  var formatter: String? { get }
20
+ var maxConcurrentSimulators: Int? { get }
21
+ var disableConcurrentTesting: Bool { get }
20
22
  var testWithoutBuilding: Bool? { get }
21
23
  var buildForTesting: Bool? { get }
22
24
  var xctestrun: String? { get }
23
25
  var derivedDataPath: String? { get }
26
+ var shouldZipBuildProducts: Bool { get }
24
27
  var resultBundle: Bool { get }
25
28
  var sdk: String? { get }
26
29
  var openReport: Bool { get }
@@ -59,10 +62,13 @@ extension ScanfileProtocol {
59
62
  var buildlogPath: String { return "~/Library/Logs/scan" }
60
63
  var includeSimulatorLogs: Bool { return false }
61
64
  var formatter: String? { return nil }
65
+ var maxConcurrentSimulators: Int? { return nil }
66
+ var disableConcurrentTesting: Bool { return false }
62
67
  var testWithoutBuilding: Bool? { return nil }
63
68
  var buildForTesting: Bool? { return nil }
64
69
  var xctestrun: String? { return nil }
65
70
  var derivedDataPath: String? { return nil }
71
+ var shouldZipBuildProducts: Bool { return false }
66
72
  var resultBundle: Bool { return false }
67
73
  var sdk: String? { return nil }
68
74
  var openReport: Bool { return false }
@@ -84,4 +90,4 @@ extension ScanfileProtocol {
84
90
 
85
91
  // Please don't remove the lines below
86
92
  // They are used to detect outdated files
87
- // FastlaneRunnerAPIVersion [0.9.2]
93
+ // FastlaneRunnerAPIVersion [0.9.3]
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.93.1
21
+ // Generated with fastlane 2.94.0
@@ -146,6 +146,17 @@ module Scan
146
146
  env_name: "SCAN_FORMATTER",
147
147
  description: "A custom xcpretty formatter to use",
148
148
  optional: true),
149
+ FastlaneCore::ConfigItem.new(key: :max_concurrent_simulators,
150
+ type: Integer,
151
+ env_name: "SCAN_MAX_CONCURRENT_SIMULATORS",
152
+ description: "Constrain the number of simulator devices on which to test concurrently. Equivalent to -maximum-concurrent-test-simulator-destinations",
153
+ optional: true),
154
+ FastlaneCore::ConfigItem.new(key: :disable_concurrent_testing,
155
+ type: Boolean,
156
+ default_value: false,
157
+ env_name: "SCAN_DISABLE_CONCURRENT_TESTING",
158
+ description: "Do not run test bundles in parallel on the specified destinations. Testing will occur on each destination serially. Equivalent to -disable-concurrent-testing",
159
+ optional: true),
149
160
 
150
161
  FastlaneCore::ConfigItem.new(key: :test_without_building,
151
162
  short_option: "-T",
@@ -37,6 +37,8 @@ module Scan
37
37
  options << "-toolchain '#{config[:toolchain]}'" if config[:toolchain]
38
38
  options << "-derivedDataPath '#{config[:derived_data_path]}'" if config[:derived_data_path]
39
39
  options << "-resultBundlePath '#{result_bundle_path}'" if config[:result_bundle]
40
+ options << "-maximum-concurrent-test-simulator-destinations #{config[:max_concurrent_simulators]}" if config[:max_concurrent_simulators]
41
+ options << "-disable-concurrent-testing" if config[:disable_concurrent_testing]
40
42
  options << "-enableCodeCoverage #{config[:code_coverage] ? 'YES' : 'NO'}" unless config[:code_coverage].nil?
41
43
  options << "-enableAddressSanitizer #{config[:address_sanitizer] ? 'YES' : 'NO'}" unless config[:address_sanitizer].nil?
42
44
  options << "-enableThreadSanitizer #{config[:thread_sanitizer] ? 'YES' : 'NO'}" unless config[:thread_sanitizer].nil?
metadata CHANGED
@@ -1,29 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.94.0.beta.20180501050030
4
+ version: 2.94.0
5
5
  platform: ruby
6
6
  authors:
7
- - Felix Krause
8
- - Luka Mirosevic
7
+ - Stefan Natchev
8
+ - Jorge Revuelta H
9
+ - Andrew McBurney
9
10
  - Maksym Grebenets
11
+ - Felix Krause
12
+ - Danielle Tomlinson
13
+ - Jan Piotrowski
10
14
  - Josh Holtz
15
+ - Iulian Onofrei
11
16
  - Kohki Miki
12
- - Aaron Brager
13
- - Jan Piotrowski
14
- - Jorge Revuelta H
17
+ - Jérôme Lacoste
18
+ - Olivier Halligon
15
19
  - Fumiya Nakamura
16
- - Stefan Natchev
20
+ - Helmut Januschka
17
21
  - Joshua Liebowitz
18
- - Manu Wallner
19
22
  - Jimmy Dee
20
- - Helmut Januschka
21
- - Andrew McBurney
22
- - Danielle Tomlinson
23
- - Olivier Halligon
23
+ - Manu Wallner
24
+ - Aaron Brager
24
25
  - Matthew Ellis
25
- - Jérôme Lacoste
26
- - Iulian Onofrei
26
+ - Luka Mirosevic
27
27
  autorequire:
28
28
  bindir: bin
29
29
  cert_chain: []
@@ -863,6 +863,20 @@ dependencies:
863
863
  - - "~>"
864
864
  - !ruby/object:Gem::Version
865
865
  version: 1.4.8
866
+ - !ruby/object:Gem::Dependency
867
+ name: xcov
868
+ requirement: !ruby/object:Gem::Requirement
869
+ requirements:
870
+ - - "~>"
871
+ - !ruby/object:Gem::Version
872
+ version: 1.4.1
873
+ type: :development
874
+ prerelease: false
875
+ version_requirements: !ruby/object:Gem::Requirement
876
+ requirements:
877
+ - - "~>"
878
+ - !ruby/object:Gem::Version
879
+ version: 1.4.1
866
880
  description: The easiest way to automate beta deployments and releases for your iOS
867
881
  and Android apps
868
882
  email:
@@ -1248,6 +1262,7 @@ files:
1248
1262
  - fastlane/swift/Fastlane.swift
1249
1263
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj
1250
1264
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
1265
+ - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate
1251
1266
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme
1252
1267
  - fastlane/swift/FastlaneSwiftRunner/README.txt
1253
1268
  - fastlane/swift/Gymfile.swift
@@ -1638,23 +1653,23 @@ post_install_message:
1638
1653
  rdoc_options: []
1639
1654
  require_paths:
1640
1655
  - credentials_manager/lib
1641
- - pilot/lib
1656
+ - pem/lib
1657
+ - snapshot/lib
1658
+ - frameit/lib
1642
1659
  - match/lib
1660
+ - fastlane_core/lib
1661
+ - deliver/lib
1662
+ - scan/lib
1643
1663
  - supply/lib
1664
+ - cert/lib
1665
+ - fastlane/lib
1644
1666
  - spaceship/lib
1645
- - sigh/lib
1646
- - screengrab/lib
1647
- - frameit/lib
1648
- - produce/lib
1649
- - deliver/lib
1667
+ - pilot/lib
1650
1668
  - gym/lib
1651
- - snapshot/lib
1652
- - fastlane_core/lib
1653
- - fastlane/lib
1654
- - cert/lib
1655
1669
  - precheck/lib
1656
- - scan/lib
1657
- - pem/lib
1670
+ - screengrab/lib
1671
+ - sigh/lib
1672
+ - produce/lib
1658
1673
  required_ruby_version: !ruby/object:Gem::Requirement
1659
1674
  requirements:
1660
1675
  - - ">="
@@ -1662,12 +1677,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
1662
1677
  version: 2.0.0
1663
1678
  required_rubygems_version: !ruby/object:Gem::Requirement
1664
1679
  requirements:
1665
- - - ">"
1680
+ - - ">="
1666
1681
  - !ruby/object:Gem::Version
1667
- version: 1.3.1
1682
+ version: '0'
1668
1683
  requirements: []
1669
1684
  rubyforge_project:
1670
- rubygems_version: 2.5.2.1
1685
+ rubygems_version: 2.5.2.3
1671
1686
  signing_key:
1672
1687
  specification_version: 4
1673
1688
  summary: The easiest way to automate beta deployments and releases for your iOS and