fastlane 2.94.0.beta.20180501050030 → 2.94.0

Sign up to get free protection for your applications and to get access to all the features.
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