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 +4 -4
- data/README.md +62 -62
- data/fastlane/lib/fastlane/actions/prompt.rb +9 -1
- data/fastlane/lib/fastlane/actions/verify_build.rb +7 -3
- data/fastlane/lib/fastlane/actions/xcov.rb +2 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +79 -7
- data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/josh.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/Matchfile.swift +1 -1
- data/fastlane/swift/Precheckfile.swift +1 -1
- data/fastlane/swift/Scanfile.swift +1 -1
- data/fastlane/swift/ScanfileProtocol.swift +7 -1
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/scan/lib/scan/options.rb +11 -0
- data/scan/lib/scan/test_command_generator.rb +2 -0
- metadata +44 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 47392ec23cfdbf0b1584b24f7dfe93d3bc2a3287
|
4
|
+
data.tar.gz: eef9d4ea4ae7fd421df3afa826106b543014de15
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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='
|
112
|
-
<a href='https://github.com/
|
113
|
-
<img src='https://github.com/
|
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/
|
109
|
+
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
116
110
|
</td>
|
117
|
-
<td id='
|
118
|
-
<a href='https://github.com/
|
119
|
-
<img src='https://github.com/
|
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/
|
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='
|
138
|
-
<a href='https://github.com/
|
139
|
-
<img src='https://github.com/
|
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/
|
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
|
-
|
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
|
-
|
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
|
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
|
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
|
@@ -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
|
-
|
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.
|
4022
|
+
// FastlaneRunnerAPIVersion [0.9.16]
|
Binary file
|
@@ -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.
|
93
|
+
// FastlaneRunnerAPIVersion [0.9.3]
|
data/scan/lib/scan/options.rb
CHANGED
@@ -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
|
4
|
+
version: 2.94.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
-
|
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
|
-
-
|
13
|
-
-
|
14
|
-
- Jorge Revuelta H
|
17
|
+
- Jérôme Lacoste
|
18
|
+
- Olivier Halligon
|
15
19
|
- Fumiya Nakamura
|
16
|
-
-
|
20
|
+
- Helmut Januschka
|
17
21
|
- Joshua Liebowitz
|
18
|
-
- Manu Wallner
|
19
22
|
- Jimmy Dee
|
20
|
-
-
|
21
|
-
-
|
22
|
-
- Danielle Tomlinson
|
23
|
-
- Olivier Halligon
|
23
|
+
- Manu Wallner
|
24
|
+
- Aaron Brager
|
24
25
|
- Matthew Ellis
|
25
|
-
-
|
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
|
-
-
|
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
|
-
-
|
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
|
-
-
|
1657
|
-
-
|
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:
|
1682
|
+
version: '0'
|
1668
1683
|
requirements: []
|
1669
1684
|
rubyforge_project:
|
1670
|
-
rubygems_version: 2.5.2.
|
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
|