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 +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
|