fastlane 2.93.0.beta.20180423050019 → 2.93.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 +68 -68
- data/fastlane/lib/fastlane/action.rb +1 -0
- data/fastlane/lib/fastlane/actions/lane_context.rb +1 -1
- data/fastlane/lib/fastlane/actions/update_info_plist.rb +10 -15
- data/fastlane/lib/fastlane/actions/update_plist.rb +80 -0
- data/fastlane/lib/fastlane/server/json_return_value_processor.rb +2 -0
- data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +9 -1
- data/fastlane/lib/fastlane/swift_fastlane_function.rb +4 -0
- data/fastlane/lib/fastlane/version.rb +1 -1
- data/fastlane/swift/Deliverfile.swift +1 -1
- data/fastlane/swift/Fastlane.swift +22 -8
- data/fastlane/swift/Gymfile.swift +1 -1
- data/fastlane/swift/GymfileProtocol.swift +3 -3
- 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 +3 -4
- data/fastlane/swift/Screengrabfile.swift +1 -1
- data/fastlane/swift/Snapshotfile.swift +1 -1
- data/gym/lib/gym/generators/build_command_generator.rb +5 -1
- data/gym/lib/gym/options.rb +2 -1
- data/scan/lib/scan/options.rb +2 -1
- data/scan/lib/scan/test_command_generator.rb +5 -1
- metadata +31 -30
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e37fd90a866d790297bd97c66fb748ccecdc3816
|
4
|
+
data.tar.gz: 555107f3948c0880efc76cd39a749bdf7798d887
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6604f75cd501ef22374eac3b39bba1a0d80acecd8bfff12af5b936dc354dee15e1a66636e364721a77c2d98e148a62164b1ed274f12559d9b6791e57b6f25645
|
7
|
+
data.tar.gz: 5e1d6d46d7b5a0bb146ab0b1956e9145ae6ae4b370ecdf8c2115ea1b7edab994d4d5a6ffd2010c100280ab5fd1ae9740606c85b668c36298fdd9bb7cf42df68e
|
data/README.md
CHANGED
@@ -32,93 +32,61 @@ 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='andrew-mcburney'>
|
36
|
-
<a href='https://github.com/AndrewMcBurney'>
|
37
|
-
<img src='https://github.com/AndrewMcBurney.png?size=140'>
|
38
|
-
</a>
|
39
|
-
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
40
|
-
</td>
|
41
35
|
<td id='stefan-natchev'>
|
42
36
|
<a href='https://github.com/snatchev'>
|
43
37
|
<img src='https://github.com/snatchev.png?size=140'>
|
44
38
|
</a>
|
45
39
|
<h4 align='center'><a href='https://twitter.com/snatchev'>Stefan Natchev</a></h4>
|
46
40
|
</td>
|
47
|
-
<td id='josh-holtz'>
|
48
|
-
<a href='https://github.com/joshdholtz'>
|
49
|
-
<img src='https://github.com/joshdholtz.png?size=140'>
|
50
|
-
</a>
|
51
|
-
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
52
|
-
</td>
|
53
41
|
<td id='jorge-revuelta-h'>
|
54
42
|
<a href='https://github.com/minuscorp'>
|
55
43
|
<img src='https://github.com/minuscorp.png?size=140'>
|
56
44
|
</a>
|
57
45
|
<h4 align='center'><a href='https://twitter.com/minuscorp'>Jorge Revuelta H</a></h4>
|
58
46
|
</td>
|
59
|
-
<td id='
|
60
|
-
<a href='https://github.com/
|
61
|
-
<img src='https://github.com/
|
62
|
-
</a>
|
63
|
-
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
64
|
-
</td>
|
65
|
-
</tr>
|
66
|
-
<tr>
|
67
|
-
<td id='fumiya-nakamura'>
|
68
|
-
<a href='https://github.com/nafu'>
|
69
|
-
<img src='https://github.com/nafu.png?size=140'>
|
70
|
-
</a>
|
71
|
-
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
72
|
-
</td>
|
73
|
-
<td id='maksym-grebenets'>
|
74
|
-
<a href='https://github.com/mgrebenets'>
|
75
|
-
<img src='https://github.com/mgrebenets.png?size=140'>
|
47
|
+
<td id='manu-wallner'>
|
48
|
+
<a href='https://github.com/milch'>
|
49
|
+
<img src='https://github.com/milch.png?size=140'>
|
76
50
|
</a>
|
77
|
-
<h4 align='center'><a href='https://twitter.com/
|
51
|
+
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
78
52
|
</td>
|
79
|
-
<td id='
|
80
|
-
<a href='https://github.com/
|
81
|
-
<img src='https://github.com/
|
53
|
+
<td id='luka-mirosevic'>
|
54
|
+
<a href='https://github.com/lmirosevic'>
|
55
|
+
<img src='https://github.com/lmirosevic.png?size=140'>
|
82
56
|
</a>
|
83
|
-
<h4 align='center'><a href='https://twitter.com/
|
57
|
+
<h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
|
84
58
|
</td>
|
85
|
-
<td id='
|
86
|
-
<a href='https://github.com/
|
87
|
-
<img src='https://github.com/
|
59
|
+
<td id='olivier-halligon'>
|
60
|
+
<a href='https://github.com/AliSoftware'>
|
61
|
+
<img src='https://github.com/AliSoftware.png?size=140'>
|
88
62
|
</a>
|
89
|
-
<h4 align='center'>
|
63
|
+
<h4 align='center'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
|
90
64
|
</td>
|
65
|
+
</tr>
|
66
|
+
<tr>
|
91
67
|
<td id='iulian-onofrei'>
|
92
68
|
<a href='https://github.com/revolter'>
|
93
69
|
<img src='https://github.com/revolter.png?size=140'>
|
94
70
|
</a>
|
95
71
|
<h4 align='center'><a href='https://twitter.com/Revolt666'>Iulian Onofrei</a></h4>
|
96
72
|
</td>
|
97
|
-
</tr>
|
98
|
-
<tr>
|
99
73
|
<td id='kohki-miki'>
|
100
74
|
<a href='https://github.com/giginet'>
|
101
75
|
<img src='https://github.com/giginet.png?size=140'>
|
102
76
|
</a>
|
103
77
|
<h4 align='center'><a href='https://twitter.com/giginet'>Kohki Miki</a></h4>
|
104
78
|
</td>
|
105
|
-
<td id='
|
106
|
-
<a href='https://github.com/
|
107
|
-
<img src='https://github.com/
|
108
|
-
</a>
|
109
|
-
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
110
|
-
</td>
|
111
|
-
<td id='danielle-tomlinson'>
|
112
|
-
<a href='https://github.com/DanToml'>
|
113
|
-
<img src='https://github.com/DanToml.png?size=140'>
|
79
|
+
<td id='matthew-ellis'>
|
80
|
+
<a href='https://github.com/matthewellis'>
|
81
|
+
<img src='https://github.com/matthewellis.png?size=140'>
|
114
82
|
</a>
|
115
|
-
<h4 align='center'><a href='https://twitter.com/
|
83
|
+
<h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
|
116
84
|
</td>
|
117
|
-
<td id='
|
118
|
-
<a href='https://github.com/
|
119
|
-
<img src='https://github.com/
|
85
|
+
<td id='maksym-grebenets'>
|
86
|
+
<a href='https://github.com/mgrebenets'>
|
87
|
+
<img src='https://github.com/mgrebenets.png?size=140'>
|
120
88
|
</a>
|
121
|
-
<h4 align='center'><a href='https://twitter.com/
|
89
|
+
<h4 align='center'><a href='https://twitter.com/mgrebenets'>Maksym Grebenets</a></h4>
|
122
90
|
</td>
|
123
91
|
<td id='aaron-brager'>
|
124
92
|
<a href='https://github.com/getaaron'>
|
@@ -128,35 +96,67 @@ If the above doesn't help, please [submit an issue](https://github.com/fastlane/
|
|
128
96
|
</td>
|
129
97
|
</tr>
|
130
98
|
<tr>
|
131
|
-
<td id='
|
132
|
-
<a href='https://github.com/
|
133
|
-
<img src='https://github.com/
|
99
|
+
<td id='danielle-tomlinson'>
|
100
|
+
<a href='https://github.com/DanToml'>
|
101
|
+
<img src='https://github.com/DanToml.png?size=140'>
|
134
102
|
</a>
|
135
|
-
<h4 align='center'><a href='https://twitter.com/
|
103
|
+
<h4 align='center'><a href='https://twitter.com/DanToml'>Danielle Tomlinson</a></h4>
|
104
|
+
</td>
|
105
|
+
<td id='josh-holtz'>
|
106
|
+
<a href='https://github.com/joshdholtz'>
|
107
|
+
<img src='https://github.com/joshdholtz.png?size=140'>
|
108
|
+
</a>
|
109
|
+
<h4 align='center'><a href='https://twitter.com/joshdholtz'>Josh Holtz</a></h4>
|
110
|
+
</td>
|
111
|
+
<td id='fumiya-nakamura'>
|
112
|
+
<a href='https://github.com/nafu'>
|
113
|
+
<img src='https://github.com/nafu.png?size=140'>
|
114
|
+
</a>
|
115
|
+
<h4 align='center'><a href='https://twitter.com/nafu003'>Fumiya Nakamura</a></h4>
|
116
|
+
</td>
|
117
|
+
<td id='andrew-mcburney'>
|
118
|
+
<a href='https://github.com/AndrewMcBurney'>
|
119
|
+
<img src='https://github.com/AndrewMcBurney.png?size=140'>
|
120
|
+
</a>
|
121
|
+
<h4 align='center'><a href='https://twitter.com/armcburney'>Andrew McBurney</a></h4>
|
136
122
|
</td>
|
123
|
+
<td id='helmut-januschka'>
|
124
|
+
<a href='https://github.com/hjanuschka'>
|
125
|
+
<img src='https://github.com/hjanuschka.png?size=140'>
|
126
|
+
</a>
|
127
|
+
<h4 align='center'><a href='https://twitter.com/hjanuschka'>Helmut Januschka</a></h4>
|
128
|
+
</td>
|
129
|
+
</tr>
|
130
|
+
<tr>
|
137
131
|
<td id='jan-piotrowski'>
|
138
132
|
<a href='https://github.com/janpio'>
|
139
133
|
<img src='https://github.com/janpio.png?size=140'>
|
140
134
|
</a>
|
141
135
|
<h4 align='center'><a href='https://twitter.com/Sujan'>Jan Piotrowski</a></h4>
|
142
136
|
</td>
|
143
|
-
<td id='manu-wallner'>
|
144
|
-
<a href='https://github.com/milch'>
|
145
|
-
<img src='https://github.com/milch.png?size=140'>
|
146
|
-
</a>
|
147
|
-
<h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
|
148
|
-
</td>
|
149
137
|
<td id='jérôme-lacoste'>
|
150
138
|
<a href='https://github.com/lacostej'>
|
151
139
|
<img src='https://github.com/lacostej.png?size=140'>
|
152
140
|
</a>
|
153
141
|
<h4 align='center'><a href='https://twitter.com/lacostej'>Jérôme Lacoste</a></h4>
|
154
142
|
</td>
|
155
|
-
<td id='
|
156
|
-
<a href='https://github.com/
|
157
|
-
<img src='https://github.com/
|
143
|
+
<td id='jimmy-dee'>
|
144
|
+
<a href='https://github.com/jdee'>
|
145
|
+
<img src='https://github.com/jdee.png?size=140'>
|
158
146
|
</a>
|
159
|
-
<h4 align='center'
|
147
|
+
<h4 align='center'>Jimmy Dee</h4>
|
148
|
+
</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='joshua-liebowitz'>
|
156
|
+
<a href='https://github.com/taquitos'>
|
157
|
+
<img src='https://github.com/taquitos.png?size=140'>
|
158
|
+
</a>
|
159
|
+
<h4 align='center'><a href='https://twitter.com/taquitos'>Joshua Liebowitz</a></h4>
|
160
160
|
</td>
|
161
161
|
</tr>
|
162
162
|
</table>
|
@@ -5,8 +5,6 @@ module Fastlane
|
|
5
5
|
|
6
6
|
class UpdateInfoPlistAction < Action
|
7
7
|
def self.run(params)
|
8
|
-
require 'xcodeproj'
|
9
|
-
|
10
8
|
# Check if parameters are set
|
11
9
|
if params[:app_identifier] || params[:display_name] || params[:block]
|
12
10
|
if (params[:app_identifier] || params[:display_name]) && params[:block]
|
@@ -34,18 +32,15 @@ module Fastlane
|
|
34
32
|
# Read existing plist file
|
35
33
|
info_plist_path = File.join(folder, "..", params[:plist_path])
|
36
34
|
UI.user_error!("Couldn't find info plist file at path '#{info_plist_path}'") unless File.exist?(info_plist_path)
|
37
|
-
plist = Xcodeproj::Plist.read_from_path(info_plist_path)
|
38
|
-
|
39
|
-
# Update plist values
|
40
|
-
plist['CFBundleIdentifier'] = params[:app_identifier] if params[:app_identifier]
|
41
|
-
plist['CFBundleDisplayName'] = params[:display_name] if params[:display_name]
|
42
|
-
params[:block].call(plist) if params[:block]
|
43
|
-
|
44
|
-
# Write changes to file
|
45
|
-
Xcodeproj::Plist.write_to_path(plist, info_plist_path)
|
46
35
|
|
47
|
-
|
48
|
-
|
36
|
+
UpdatePlistAction.run(
|
37
|
+
plist_path: info_plist_path,
|
38
|
+
block: proc do |plist|
|
39
|
+
plist['CFBundleIdentifier'] = params[:app_identifier] if params[:app_identifier]
|
40
|
+
plist['CFBundleDisplayName'] = params[:display_name] if params[:display_name]
|
41
|
+
params[:block].call(plist) if params[:block]
|
42
|
+
end
|
43
|
+
)
|
49
44
|
else
|
50
45
|
UI.important("You haven't specified any parameters to update your plist.")
|
51
46
|
false
|
@@ -131,10 +126,10 @@ module Fastlane
|
|
131
126
|
'update_info_plist( # Advanced processing: find URL scheme for particular key and replace value
|
132
127
|
xcodeproj: "path/to/Example.proj",
|
133
128
|
plist_path: "path/to/Info.plist",
|
134
|
-
block:
|
129
|
+
block: proc do |plist|
|
135
130
|
urlScheme = plist["CFBundleURLTypes"].find{|scheme| scheme["CFBundleURLName"] == "com.acme.default-url-handler"}
|
136
131
|
urlScheme[:CFBundleURLSchemes] = ["acme-production"]
|
137
|
-
|
132
|
+
end
|
138
133
|
)'
|
139
134
|
]
|
140
135
|
end
|
@@ -0,0 +1,80 @@
|
|
1
|
+
module Fastlane
|
2
|
+
module Actions
|
3
|
+
module SharedValues
|
4
|
+
end
|
5
|
+
|
6
|
+
class UpdatePlistAction < Action
|
7
|
+
def self.run(params)
|
8
|
+
require 'xcodeproj'
|
9
|
+
|
10
|
+
if params[:plist_path].nil?
|
11
|
+
UI.user_error!("You must specify a plist path")
|
12
|
+
end
|
13
|
+
|
14
|
+
# Read existing plist file
|
15
|
+
plist_path = params[:plist_path]
|
16
|
+
|
17
|
+
UI.user_error!("Couldn't find plist file at path '#{plist_path}'") unless File.exist?(plist_path)
|
18
|
+
plist = Xcodeproj::Plist.read_from_path(plist_path)
|
19
|
+
|
20
|
+
params[:block].call(plist) if params[:block]
|
21
|
+
|
22
|
+
# Write changes to file
|
23
|
+
Xcodeproj::Plist.write_to_path(plist, plist_path)
|
24
|
+
|
25
|
+
UI.success("Updated #{params[:plist_path]} 💾.")
|
26
|
+
File.read(plist_path)
|
27
|
+
end
|
28
|
+
|
29
|
+
#####################################################
|
30
|
+
# @!group Documentation
|
31
|
+
#####################################################
|
32
|
+
|
33
|
+
def self.is_supported?(platform)
|
34
|
+
[:ios].include?(platform)
|
35
|
+
end
|
36
|
+
|
37
|
+
def self.description
|
38
|
+
'Update a plist file'
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.details
|
42
|
+
"This action allows you to modify any `plist` file."
|
43
|
+
end
|
44
|
+
|
45
|
+
def self.available_options
|
46
|
+
[
|
47
|
+
|
48
|
+
FastlaneCore::ConfigItem.new(key: :plist_path,
|
49
|
+
env_name: "FL_UPDATE_PLIST_PATH",
|
50
|
+
description: "Path to plist file",
|
51
|
+
optional: true),
|
52
|
+
FastlaneCore::ConfigItem.new(key: :block,
|
53
|
+
is_string: false,
|
54
|
+
description: 'A block to process plist with custom logic')
|
55
|
+
|
56
|
+
]
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.author
|
60
|
+
'rishabhtayal'
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.example_code
|
64
|
+
[
|
65
|
+
'update_plist( # Advanced processing: find URL scheme for particular key and replace value
|
66
|
+
plist_path: "path/to/Info.plist",
|
67
|
+
block: proc do |plist|
|
68
|
+
urlScheme = plist["CFBundleURLTypes"].find{|scheme| scheme["CFBundleURLName"] == "com.acme.default-url-handler"}
|
69
|
+
urlScheme[:CFBundleURLSchemes] = ["acme-production"]
|
70
|
+
end
|
71
|
+
)'
|
72
|
+
]
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.category
|
76
|
+
:project
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
end
|
@@ -17,6 +17,8 @@ module Fastlane
|
|
17
17
|
return process_value_as_array_of_strings(return_value: return_value)
|
18
18
|
when :hash_of_strings
|
19
19
|
return process_value_as_hash_of_strings(return_value: return_value)
|
20
|
+
when :hash
|
21
|
+
return process_value_as_hash_of_strings(return_value: return_value)
|
20
22
|
else
|
21
23
|
UI.verbose("Unknown return type defined: #{return_value_type} for value: #{return_value}")
|
22
24
|
return process_value_as_string(return_value: return_value)
|
@@ -169,6 +169,14 @@ module Fastlane
|
|
169
169
|
}
|
170
170
|
|
171
171
|
func parseDictionary(fromString: String, function: String = #function) -> [String : String] {
|
172
|
+
return parseDictionaryHelper(fromString: fromString, function: function) as! [String: String]
|
173
|
+
}
|
174
|
+
|
175
|
+
func parseDictionary(fromString: String, function: String = #function) -> [String : Any] {
|
176
|
+
return parseDictionaryHelper(fromString: fromString, function: function)
|
177
|
+
}
|
178
|
+
|
179
|
+
func parseDictionaryHelper(fromString: String, function: String = #function) -> [String : Any] {
|
172
180
|
verbose(message: "parsing an Array from data: \(fromString), from function: \(function)")
|
173
181
|
let potentialDictionary: String
|
174
182
|
if fromString.count < 2 {
|
@@ -177,7 +185,7 @@ func parseDictionary(fromString: String, function: String = #function) -> [Strin
|
|
177
185
|
} else {
|
178
186
|
potentialDictionary = fromString
|
179
187
|
}
|
180
|
-
let dictionary: [String :
|
188
|
+
let dictionary: [String : Any] = try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String : Any]
|
181
189
|
return dictionary
|
182
190
|
}
|
183
191
|
|
@@ -53,6 +53,8 @@ module Fastlane
|
|
53
53
|
return "[String]"
|
54
54
|
when :hash_of_strings
|
55
55
|
return "[String : String]"
|
56
|
+
when :hash
|
57
|
+
return "[String : Any]"
|
56
58
|
when :bool
|
57
59
|
return "Bool"
|
58
60
|
when :int
|
@@ -197,6 +199,8 @@ module Fastlane
|
|
197
199
|
returned_object = "parseArray(fromString: #{returned_object})"
|
198
200
|
when :hash_of_strings
|
199
201
|
returned_object = "parseDictionary(fromString: #{returned_object})"
|
202
|
+
when :hash
|
203
|
+
returned_object = "parseDictionary(fromString: #{returned_object})"
|
200
204
|
when :bool
|
201
205
|
returned_object = "parseBool(fromString: #{returned_object})"
|
202
206
|
when :int
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.93.0
|
2
|
+
VERSION = '2.93.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
|
@@ -481,7 +481,7 @@ func buildApp(workspace: String? = nil,
|
|
481
481
|
buildPath: String? = nil,
|
482
482
|
archivePath: String? = nil,
|
483
483
|
derivedDataPath: String? = nil,
|
484
|
-
resultBundle:
|
484
|
+
resultBundle: Bool = false,
|
485
485
|
buildlogPath: String = "~/Library/Logs/gym",
|
486
486
|
sdk: String? = nil,
|
487
487
|
toolchain: String? = nil,
|
@@ -559,7 +559,7 @@ func buildIosApp(workspace: String? = nil,
|
|
559
559
|
buildPath: String? = nil,
|
560
560
|
archivePath: String? = nil,
|
561
561
|
derivedDataPath: String? = nil,
|
562
|
-
resultBundle:
|
562
|
+
resultBundle: Bool = false,
|
563
563
|
buildlogPath: String = "~/Library/Logs/gym",
|
564
564
|
sdk: String? = nil,
|
565
565
|
toolchain: String? = nil,
|
@@ -1695,7 +1695,7 @@ func gym(workspace: String? = gymfile.workspace,
|
|
1695
1695
|
buildPath: String? = gymfile.buildPath,
|
1696
1696
|
archivePath: String? = gymfile.archivePath,
|
1697
1697
|
derivedDataPath: String? = gymfile.derivedDataPath,
|
1698
|
-
resultBundle:
|
1698
|
+
resultBundle: Bool = gymfile.resultBundle,
|
1699
1699
|
buildlogPath: String = gymfile.buildlogPath,
|
1700
1700
|
sdk: String? = gymfile.sdk,
|
1701
1701
|
toolchain: String? = gymfile.toolchain,
|
@@ -1975,7 +1975,7 @@ func jira(url: String,
|
|
1975
1975
|
RubyCommand.Argument(name: "comment_text", value: commentText)])
|
1976
1976
|
_ = runner.executeCommand(command)
|
1977
1977
|
}
|
1978
|
-
@discardableResult func laneContext() -> [String :
|
1978
|
+
@discardableResult func laneContext() -> [String : Any] {
|
1979
1979
|
let command = RubyCommand(commandID: "", methodName: "lane_context", className: nil, args: [])
|
1980
1980
|
return parseDictionary(fromString: runner.executeCommand(command))
|
1981
1981
|
}
|
@@ -2595,7 +2595,7 @@ func runTests(workspace: String? = nil,
|
|
2595
2595
|
buildForTesting: Bool? = nil,
|
2596
2596
|
xctestrun: String? = nil,
|
2597
2597
|
derivedDataPath: String? = nil,
|
2598
|
-
resultBundle:
|
2598
|
+
resultBundle: Bool = false,
|
2599
2599
|
sdk: String? = nil,
|
2600
2600
|
openReport: Bool = false,
|
2601
2601
|
configuration: String? = nil,
|
@@ -2713,7 +2713,7 @@ func scan(workspace: String? = scanfile.workspace,
|
|
2713
2713
|
buildForTesting: Bool? = scanfile.buildForTesting,
|
2714
2714
|
xctestrun: String? = scanfile.xctestrun,
|
2715
2715
|
derivedDataPath: String? = scanfile.derivedDataPath,
|
2716
|
-
resultBundle:
|
2716
|
+
resultBundle: Bool = scanfile.resultBundle,
|
2717
2717
|
sdk: String? = scanfile.sdk,
|
2718
2718
|
openReport: Bool = scanfile.openReport,
|
2719
2719
|
configuration: String? = scanfile.configuration,
|
@@ -3483,6 +3483,12 @@ func updateInfoPlist(xcodeproj: String? = nil,
|
|
3483
3483
|
RubyCommand.Argument(name: "block", value: block)])
|
3484
3484
|
_ = runner.executeCommand(command)
|
3485
3485
|
}
|
3486
|
+
func updatePlist(plistPath: String? = nil,
|
3487
|
+
block: String) {
|
3488
|
+
let command = RubyCommand(commandID: "", methodName: "update_plist", className: nil, args: [RubyCommand.Argument(name: "plist_path", value: plistPath),
|
3489
|
+
RubyCommand.Argument(name: "block", value: block)])
|
3490
|
+
_ = runner.executeCommand(command)
|
3491
|
+
}
|
3486
3492
|
func updateProjectCodeSigning(path: String,
|
3487
3493
|
udid: String,
|
3488
3494
|
uuid: String) {
|
@@ -3902,6 +3908,14 @@ func parseArray(fromString: String, function: String = #function) -> [String] {
|
|
3902
3908
|
}
|
3903
3909
|
|
3904
3910
|
func parseDictionary(fromString: String, function: String = #function) -> [String : String] {
|
3911
|
+
return parseDictionaryHelper(fromString: fromString, function: function) as! [String: String]
|
3912
|
+
}
|
3913
|
+
|
3914
|
+
func parseDictionary(fromString: String, function: String = #function) -> [String : Any] {
|
3915
|
+
return parseDictionaryHelper(fromString: fromString, function: function)
|
3916
|
+
}
|
3917
|
+
|
3918
|
+
func parseDictionaryHelper(fromString: String, function: String = #function) -> [String : Any] {
|
3905
3919
|
verbose(message: "parsing an Array from data: \(fromString), from function: \(function)")
|
3906
3920
|
let potentialDictionary: String
|
3907
3921
|
if fromString.count < 2 {
|
@@ -3910,7 +3924,7 @@ func parseDictionary(fromString: String, function: String = #function) -> [Strin
|
|
3910
3924
|
} else {
|
3911
3925
|
potentialDictionary = fromString
|
3912
3926
|
}
|
3913
|
-
let dictionary: [String :
|
3927
|
+
let dictionary: [String : Any] = try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String : Any]
|
3914
3928
|
return dictionary
|
3915
3929
|
}
|
3916
3930
|
|
@@ -3933,4 +3947,4 @@ let screengrabfile: Screengrabfile = Screengrabfile()
|
|
3933
3947
|
let snapshotfile: Snapshotfile = Snapshotfile()
|
3934
3948
|
// Please don't remove the lines below
|
3935
3949
|
// They are used to detect outdated files
|
3936
|
-
// FastlaneRunnerAPIVersion [0.9.
|
3950
|
+
// FastlaneRunnerAPIVersion [0.9.15]
|
@@ -19,7 +19,7 @@ protocol GymfileProtocol: class {
|
|
19
19
|
var buildPath: String? { get }
|
20
20
|
var archivePath: String? { get }
|
21
21
|
var derivedDataPath: String? { get }
|
22
|
-
var resultBundle:
|
22
|
+
var resultBundle: Bool { get }
|
23
23
|
var buildlogPath: String { get }
|
24
24
|
var sdk: String? { get }
|
25
25
|
var toolchain: String? { get }
|
@@ -60,7 +60,7 @@ extension GymfileProtocol {
|
|
60
60
|
var buildPath: String? { return nil }
|
61
61
|
var archivePath: String? { return nil }
|
62
62
|
var derivedDataPath: String? { return nil }
|
63
|
-
var resultBundle:
|
63
|
+
var resultBundle: Bool { return false }
|
64
64
|
var buildlogPath: String { return "~/Library/Logs/gym" }
|
65
65
|
var sdk: String? { return nil }
|
66
66
|
var toolchain: String? { return nil }
|
@@ -82,4 +82,4 @@ extension GymfileProtocol {
|
|
82
82
|
|
83
83
|
// Please don't remove the lines below
|
84
84
|
// They are used to detect outdated files
|
85
|
-
// FastlaneRunnerAPIVersion [0.9.
|
85
|
+
// FastlaneRunnerAPIVersion [0.9.2]
|
@@ -21,7 +21,7 @@ protocol ScanfileProtocol: class {
|
|
21
21
|
var buildForTesting: Bool? { get }
|
22
22
|
var xctestrun: String? { get }
|
23
23
|
var derivedDataPath: String? { get }
|
24
|
-
var resultBundle:
|
24
|
+
var resultBundle: Bool { get }
|
25
25
|
var sdk: String? { get }
|
26
26
|
var openReport: Bool { get }
|
27
27
|
var configuration: String? { get }
|
@@ -63,7 +63,7 @@ extension ScanfileProtocol {
|
|
63
63
|
var buildForTesting: Bool? { return nil }
|
64
64
|
var xctestrun: String? { return nil }
|
65
65
|
var derivedDataPath: String? { return nil }
|
66
|
-
var resultBundle:
|
66
|
+
var resultBundle: Bool { return false }
|
67
67
|
var sdk: String? { return nil }
|
68
68
|
var openReport: Bool { return false }
|
69
69
|
var configuration: String? { return nil }
|
@@ -82,7 +82,6 @@ extension ScanfileProtocol {
|
|
82
82
|
var failBuild: Bool { return true }
|
83
83
|
}
|
84
84
|
|
85
|
-
|
86
85
|
// Please don't remove the lines below
|
87
86
|
// They are used to detect outdated files
|
88
|
-
// FastlaneRunnerAPIVersion [0.9.
|
87
|
+
// FastlaneRunnerAPIVersion [0.9.2]
|
@@ -125,7 +125,11 @@ module Gym
|
|
125
125
|
|
126
126
|
def result_bundle_path
|
127
127
|
unless Gym.cache[:result_bundle_path]
|
128
|
-
|
128
|
+
path = File.join(Gym.config[:output_directory], Gym.config[:output_name]) + ".result"
|
129
|
+
if File.directory?(path)
|
130
|
+
FileUtils.remove_dir(path)
|
131
|
+
end
|
132
|
+
Gym.cache[:result_bundle_path] = path
|
129
133
|
end
|
130
134
|
return Gym.cache[:result_bundle_path]
|
131
135
|
end
|
data/gym/lib/gym/options.rb
CHANGED
@@ -158,7 +158,8 @@ module Gym
|
|
158
158
|
short_option: "-u",
|
159
159
|
env_name: "GYM_RESULT_BUNDLE",
|
160
160
|
is_string: false,
|
161
|
-
description: "
|
161
|
+
description: "Should an Xcode result bundle be generated in the output directory",
|
162
|
+
default_value: false,
|
162
163
|
optional: true),
|
163
164
|
FastlaneCore::ConfigItem.new(key: :buildlog_path,
|
164
165
|
short_option: "-l",
|
data/scan/lib/scan/options.rb
CHANGED
@@ -179,7 +179,8 @@ module Scan
|
|
179
179
|
short_option: "-z",
|
180
180
|
env_name: "SCAN_RESULT_BUNDLE",
|
181
181
|
is_string: false,
|
182
|
-
description: "
|
182
|
+
description: "Should an Xcode result bundle be generated in the output directory",
|
183
|
+
default_value: false,
|
183
184
|
optional: true),
|
184
185
|
FastlaneCore::ConfigItem.new(key: :sdk,
|
185
186
|
short_option: "-k",
|
@@ -140,7 +140,11 @@ module Scan
|
|
140
140
|
|
141
141
|
def result_bundle_path
|
142
142
|
unless Scan.cache[:result_bundle_path]
|
143
|
-
|
143
|
+
path = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ".test_result"
|
144
|
+
if File.directory?(path)
|
145
|
+
FileUtils.remove_dir(path)
|
146
|
+
end
|
147
|
+
Scan.cache[:result_bundle_path] = path
|
144
148
|
end
|
145
149
|
return Scan.cache[:result_bundle_path]
|
146
150
|
end
|
metadata
CHANGED
@@ -1,33 +1,33 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fastlane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.93.0
|
4
|
+
version: 2.93.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
-
|
7
|
+
- Stefan Natchev
|
8
|
+
- Jimmy Dee
|
9
|
+
- Felix Krause
|
10
|
+
- Matthew Ellis
|
9
11
|
- Kohki Miki
|
10
12
|
- Maksym Grebenets
|
11
|
-
- Josh Holtz
|
12
13
|
- Aaron Brager
|
13
|
-
- Joshua Liebowitz
|
14
|
-
- Helmut Januschka
|
15
|
-
- Felix Krause
|
16
|
-
- Andrew McBurney
|
17
|
-
- Danielle Tomlinson
|
18
|
-
- Fumiya Nakamura
|
19
|
-
- Matthew Ellis
|
20
|
-
- Manu Wallner
|
21
|
-
- Iulian Onofrei
|
22
|
-
- Jimmy Dee
|
23
14
|
- Jérôme Lacoste
|
24
|
-
-
|
15
|
+
- Danielle Tomlinson
|
16
|
+
- Jorge Revuelta H
|
17
|
+
- Luka Mirosevic
|
25
18
|
- Jan Piotrowski
|
19
|
+
- Iulian Onofrei
|
20
|
+
- Helmut Januschka
|
21
|
+
- Josh Holtz
|
22
|
+
- Manu Wallner
|
23
|
+
- Andrew McBurney
|
26
24
|
- Olivier Halligon
|
25
|
+
- Joshua Liebowitz
|
26
|
+
- Fumiya Nakamura
|
27
27
|
autorequire:
|
28
28
|
bindir: bin
|
29
29
|
cert_chain: []
|
30
|
-
date: 2018-04-
|
30
|
+
date: 2018-04-24 00:00:00.000000000 Z
|
31
31
|
dependencies:
|
32
32
|
- !ruby/object:Gem::Dependency
|
33
33
|
name: slack-notifier
|
@@ -1133,6 +1133,7 @@ files:
|
|
1133
1133
|
- fastlane/lib/fastlane/actions/update_fastlane.rb
|
1134
1134
|
- fastlane/lib/fastlane/actions/update_icloud_container_identifiers.rb
|
1135
1135
|
- fastlane/lib/fastlane/actions/update_info_plist.rb
|
1136
|
+
- fastlane/lib/fastlane/actions/update_plist.rb
|
1136
1137
|
- fastlane/lib/fastlane/actions/update_project_code_signing.rb
|
1137
1138
|
- fastlane/lib/fastlane/actions/update_project_provisioning.rb
|
1138
1139
|
- fastlane/lib/fastlane/actions/update_project_team.rb
|
@@ -1636,24 +1637,24 @@ metadata:
|
|
1636
1637
|
post_install_message:
|
1637
1638
|
rdoc_options: []
|
1638
1639
|
require_paths:
|
1639
|
-
-
|
1640
|
-
- spaceship/lib
|
1641
|
-
- scan/lib
|
1642
|
-
- fastlane/lib
|
1643
|
-
- screengrab/lib
|
1640
|
+
- credentials_manager/lib
|
1644
1641
|
- pem/lib
|
1642
|
+
- snapshot/lib
|
1645
1643
|
- frameit/lib
|
1644
|
+
- match/lib
|
1646
1645
|
- fastlane_core/lib
|
1647
|
-
- supply/lib
|
1648
1646
|
- deliver/lib
|
1649
|
-
-
|
1650
|
-
-
|
1647
|
+
- scan/lib
|
1648
|
+
- supply/lib
|
1649
|
+
- cert/lib
|
1650
|
+
- fastlane/lib
|
1651
|
+
- spaceship/lib
|
1651
1652
|
- pilot/lib
|
1652
1653
|
- gym/lib
|
1654
|
+
- precheck/lib
|
1655
|
+
- screengrab/lib
|
1656
|
+
- sigh/lib
|
1653
1657
|
- produce/lib
|
1654
|
-
- credentials_manager/lib
|
1655
|
-
- cert/lib
|
1656
|
-
- snapshot/lib
|
1657
1658
|
required_ruby_version: !ruby/object:Gem::Requirement
|
1658
1659
|
requirements:
|
1659
1660
|
- - ">="
|
@@ -1661,12 +1662,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
1661
1662
|
version: 2.0.0
|
1662
1663
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
1663
1664
|
requirements:
|
1664
|
-
- - "
|
1665
|
+
- - ">="
|
1665
1666
|
- !ruby/object:Gem::Version
|
1666
|
-
version:
|
1667
|
+
version: '0'
|
1667
1668
|
requirements: []
|
1668
1669
|
rubyforge_project:
|
1669
|
-
rubygems_version: 2.5.2.
|
1670
|
+
rubygems_version: 2.5.2.3
|
1670
1671
|
signing_key:
|
1671
1672
|
specification_version: 4
|
1672
1673
|
summary: The easiest way to automate beta deployments and releases for your iOS and
|