fastlane 2.93.0.beta.20180423050019 → 2.93.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 +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
|