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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: '078fe46f8a677ad5f4dfabb92e7198fed7e51c0c'
4
- data.tar.gz: 7bf5c4a6376296deb38f0929b5efd80097e0d346
3
+ metadata.gz: e37fd90a866d790297bd97c66fb748ccecdc3816
4
+ data.tar.gz: 555107f3948c0880efc76cd39a749bdf7798d887
5
5
  SHA512:
6
- metadata.gz: 59f3b851e1a29f9abb8fd8f3ba6bbd2a1d2ad807e66cd1f4ae0c8c18d3373cc7089e108c6c4c312f3c6061d2b96978d7bd56202475ec09962e8277dc7b76d8d8
7
- data.tar.gz: e71224464dacda8b5b481aee9901f8ff9a45c2a604878345344ac419303de2a54d95edf63d20a104d22665e0b5a22e3961730735aacf790c2d5c40d2f1559f55
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='matthew-ellis'>
60
- <a href='https://github.com/matthewellis'>
61
- <img src='https://github.com/matthewellis.png?size=140'>
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/mgrebenets'>Maksym Grebenets</a></h4>
51
+ <h4 align='center'><a href='https://twitter.com/acrooow'>Manu Wallner</a></h4>
78
52
  </td>
79
- <td id='felix-krause'>
80
- <a href='https://github.com/KrauseFx'>
81
- <img src='https://github.com/KrauseFx.png?size=140'>
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/KrauseFx'>Felix Krause</a></h4>
57
+ <h4 align='center'><a href='https://twitter.com/lmirosevic'>Luka Mirosevic</a></h4>
84
58
  </td>
85
- <td id='jimmy-dee'>
86
- <a href='https://github.com/jdee'>
87
- <img src='https://github.com/jdee.png?size=140'>
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'>Jimmy Dee</h4>
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='helmut-januschka'>
106
- <a href='https://github.com/hjanuschka'>
107
- <img src='https://github.com/hjanuschka.png?size=140'>
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/DanToml'>Danielle Tomlinson</a></h4>
83
+ <h4 align='center'><a href='https://twitter.com/mellis1995'>Matthew Ellis</a></h4>
116
84
  </td>
117
- <td id='joshua-liebowitz'>
118
- <a href='https://github.com/taquitos'>
119
- <img src='https://github.com/taquitos.png?size=140'>
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/taquitos'>Joshua Liebowitz</a></h4>
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='luka-mirosevic'>
132
- <a href='https://github.com/lmirosevic'>
133
- <img src='https://github.com/lmirosevic.png?size=140'>
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/lmirosevic'>Luka Mirosevic</a></h4>
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='olivier-halligon'>
156
- <a href='https://github.com/AliSoftware'>
157
- <img src='https://github.com/AliSoftware.png?size=140'>
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'><a href='https://twitter.com/aligatr'>Olivier Halligon</a></h4>
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>
@@ -23,6 +23,7 @@ module Fastlane
23
23
  :string,
24
24
  :array_of_strings,
25
25
  :hash_of_strings,
26
+ :hash,
26
27
  :bool,
27
28
  :int
28
29
  ]
@@ -29,7 +29,7 @@ module Fastlane
29
29
  end
30
30
 
31
31
  def self.return_type
32
- :hash_of_strings
32
+ :hash
33
33
  end
34
34
 
35
35
  def self.authors
@@ -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
- UI.success("Updated #{params[:plist_path]} 💾.")
48
- File.read(info_plist_path)
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: lambda { |plist|
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 : String] = try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String : 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.beta.20180423050019'.freeze
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
@@ -18,4 +18,4 @@ class Deliverfile: DeliverfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -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: String? = nil,
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: String? = nil,
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: String? = gymfile.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 : 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: String? = nil,
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: String? = scanfile.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 : String] = try! JSONSerialization.jsonObject(with: potentialDictionary.data(using: .utf8)!, options: []) as! [String : 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.14]
3950
+ // FastlaneRunnerAPIVersion [0.9.15]
@@ -18,4 +18,4 @@ class Gymfile: GymfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -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: String? { get }
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: String? { return nil }
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.1]
85
+ // FastlaneRunnerAPIVersion [0.9.2]
@@ -18,4 +18,4 @@ class Matchfile: MatchfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -18,4 +18,4 @@ class Precheckfile: PrecheckfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -18,4 +18,4 @@ class Scanfile: ScanfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -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: String? { get }
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: String? { return nil }
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.1]
87
+ // FastlaneRunnerAPIVersion [0.9.2]
@@ -18,4 +18,4 @@ class Screengrabfile: ScreengrabfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -18,4 +18,4 @@ class Snapshotfile: SnapshotfileProtocol {
18
18
 
19
19
 
20
20
 
21
- // Generated with fastlane 2.92.1
21
+ // Generated with fastlane 2.93.0
@@ -125,7 +125,11 @@ module Gym
125
125
 
126
126
  def result_bundle_path
127
127
  unless Gym.cache[:result_bundle_path]
128
- Gym.cache[:result_bundle_path] = File.join(Gym.config[:output_directory], Gym.config[:output_name]) + ".result"
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
@@ -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: "Location of the Xcode result bundle",
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",
@@ -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: "Location of the Xcode result bundle",
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
- Scan.cache[:result_bundle_path] = File.join(Scan.config[:output_directory], Scan.config[:scheme]) + ".test_result"
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.beta.20180423050019
4
+ version: 2.93.0
5
5
  platform: ruby
6
6
  authors:
7
- - Jorge Revuelta H
8
- - Luka Mirosevic
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
- - Stefan Natchev
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-23 00:00:00.000000000 Z
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
- - match/lib
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
- - sigh/lib
1650
- - precheck/lib
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: 1.3.1
1667
+ version: '0'
1667
1668
  requirements: []
1668
1669
  rubyforge_project:
1669
- rubygems_version: 2.5.2.1
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