fastlane 2.71.0.beta.20171220010004 → 2.71.0.beta.20171221010003

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: 5b0f28e3d854336011733cad2052ccf36787cb3f
4
- data.tar.gz: 32ab90aa7fc301ecc5025ba4bcb6ccdad23d7a38
3
+ metadata.gz: 6526f8f23e3c14fee2da16fd52d6edf38a5635fc
4
+ data.tar.gz: 334a2ccfe0982092cf469b185801cc1791e540c8
5
5
  SHA512:
6
- metadata.gz: 9d746c80610c2316b7f52070b5d7316a34a53048b5bf22d135fa9ce4c7d55465c69fc7c197871c62d35c03b7d87c089da17a86d2dcf49fc9ea1b204a11256073
7
- data.tar.gz: 8d3afe3ef6d4e1eb40aeb7a581856f6ece407b417be4b9895eb3690537a6f8f6a0081df8534220a79a1e3ea9a4163b7fc6f4259e98be1e432267978684017cb1
6
+ metadata.gz: 3bf02ecc87f629eedbb71905163bcc4105a9d6d343a2c1e5a8c1cd4fd38cde074eb14c7258f94699c6c2f1810b383eefda40bfdd4c2f5aca249723b389b79759
7
+ data.tar.gz: d1496726afc4f73ccc1176b6f61d2afbf5e7f463849ea4d1ad6f5b6516f4b6ea01b587402f1ea5fc2da73e285e54afa85a347ae34226cf08493b8c5139c1aba7
@@ -121,7 +121,7 @@ module Fastlane
121
121
  clean: true,
122
122
  output_directory: "path/to/dir", # Destination directory. Defaults to current directory.
123
123
  output_name: "my-app.ipa", # specify the name of the .ipa file to generate (including file extension)
124
- sdk: "10.0" # use SDK as the name or path of the base SDK when building the project.
124
+ sdk: "iOS 11.1" # use SDK as the name or path of the base SDK when building the project.
125
125
  )',
126
126
  'gym # alias for "build_ios_app"',
127
127
  'build_app # alias for "build_ios_app"'
@@ -204,7 +204,11 @@ lane :release do
204
204
  passbook: "on", # Valid values: "on", "off"
205
205
  push_notification: "on", # Valid values: "on", "off"
206
206
  siri_kit: "on", # Valid values: "on", "off"
207
- vpn_configuration: "on" # Valid values: "on", "off"
207
+ vpn_configuration: "on", # Valid values: "on", "off"
208
+ network_extension: "on", # Valid values: "on", "off"
209
+ hotspot: "on", # Valid values: "on", "off"
210
+ multipath: "on", # Valid values: "on", "off"
211
+ nfc_tag_reading: "on", # Valid values: "on", "off"
208
212
  }
209
213
  )
210
214
 
@@ -66,6 +66,10 @@ module Fastlane
66
66
  ]
67
67
  end
68
68
 
69
+ def self.return_type
70
+ :string
71
+ end
72
+
69
73
  def self.category
70
74
  :project
71
75
  end
@@ -69,6 +69,10 @@ module Fastlane
69
69
  ]
70
70
  end
71
71
 
72
+ def self.return_type
73
+ :string
74
+ end
75
+
72
76
  def self.category
73
77
  :project
74
78
  end
@@ -58,7 +58,11 @@ module Fastlane
58
58
  passbook: 'passbook',
59
59
  push_notification: 'push_notification',
60
60
  siri_kit: 'sirikit',
61
- vpn_configuration: 'vpn_conf'
61
+ vpn_configuration: 'vpn_conf',
62
+ network_extension: 'network_extension',
63
+ hotspot: 'hotspot',
64
+ multipath: 'multipath',
65
+ nfc_tag_reading: 'nfc_tag_reading'
62
66
  }
63
67
  end
64
68
 
@@ -174,7 +174,8 @@ module Fastlane
174
174
  return_value = ""
175
175
  end
176
176
 
177
- return JSON.generate(return_value.to_s)
177
+ # quirks_mode because sometimes the built-in library is used for some folks and that needs quirks_mode: true
178
+ return JSON.generate(return_value.to_s, quirks_mode: true)
178
179
  end
179
180
 
180
181
  def process_value_as_array_of_strings(return_value: nil)
@@ -182,6 +183,7 @@ module Fastlane
182
183
  return_value = []
183
184
  end
184
185
 
186
+ # quirks_mode shouldn't be required for real objects
185
187
  return JSON.generate(return_value)
186
188
  end
187
189
 
@@ -190,6 +192,7 @@ module Fastlane
190
192
  return_value = {}
191
193
  end
192
194
 
195
+ # quirks_mode shouldn't be required for real objects
193
196
  return JSON.generate(return_value)
194
197
  end
195
198
 
@@ -198,7 +201,8 @@ module Fastlane
198
201
  return_value = false
199
202
  end
200
203
 
201
- return JSON.generate(return_value)
204
+ # quirks_mode because sometimes the built-in library is used for some folks and that needs quirks_mode: true
205
+ return JSON.generate(return_value.to_s, quirks_mode: true)
202
206
  end
203
207
 
204
208
  def process_value_as_int(return_value: nil)
@@ -206,7 +210,8 @@ module Fastlane
206
210
  return_value = 0
207
211
  end
208
212
 
209
- return JSON.generate(return_value)
213
+ # quirks_mode because sometimes the built-in library is used for some folks and that needs quirks_mode: true
214
+ return JSON.generate(return_value.to_s, quirks_mode: true)
210
215
  end
211
216
  end
212
217
  end
@@ -79,11 +79,13 @@ module Fastlane
79
79
  file_content += autogen_version_warning_text_array
80
80
 
81
81
  file_content = file_content.join("\n")
82
- target_path = File.join(@target_output_path, "Fastlane.swift")
83
- File.write(target_path, file_content)
84
- UI.success(target_path)
82
+ fastlane_swift_api_path = File.join(@target_output_path, "Fastlane.swift")
83
+ File.write(fastlane_swift_api_path, file_content)
84
+ UI.success(fastlane_swift_api_path)
85
85
 
86
- generate_default_implementation_opening(tool_details: tool_details)
86
+ files_generated = [fastlane_swift_api_path]
87
+ files_generated += generate_default_implementations(tool_details: tool_details)
88
+ return files_generated
87
89
  end
88
90
 
89
91
  def write_lanefile(lanefile_implementation_opening: nil, class_name: nil, tool_name: nil)
@@ -109,17 +111,20 @@ module Fastlane
109
111
  target_path = File.join(@target_output_path, "#{class_name}.swift")
110
112
  File.write(target_path, file_content)
111
113
  UI.success(target_path)
114
+ return target_path
112
115
  end
113
116
 
114
- def generate_default_implementation_opening(tool_details: nil)
117
+ def generate_default_implementations(tool_details: nil)
118
+ files_generated = []
115
119
  tool_details.each do |tool_detail|
116
120
  lanefile_implementation_opening = "class #{tool_detail.swift_class}: #{tool_detail.swift_protocol} {"
117
- write_lanefile(
121
+ files_generated << write_lanefile(
118
122
  lanefile_implementation_opening: lanefile_implementation_opening,
119
123
  class_name: tool_detail.swift_class,
120
124
  tool_name: tool_detail.command_line_tool_name
121
125
  )
122
126
  end
127
+ return files_generated
123
128
  end
124
129
 
125
130
  def generate_lanefile_parsing_functions
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.71.0.beta.20171220010004'.freeze
2
+ VERSION = '2.71.0.beta.20171221010003'.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
@@ -11,4 +11,4 @@ class Deliverfile: DeliverfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -1123,7 +1123,8 @@ func danger(useBundleExec: Bool = true,
1123
1123
  failOnErrors: Bool = false,
1124
1124
  newComment: Bool = false,
1125
1125
  base: String? = nil,
1126
- head: String? = nil) {
1126
+ head: String? = nil,
1127
+ pr: String? = nil) {
1127
1128
  let command = RubyCommand(commandID: "", methodName: "danger", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
1128
1129
  RubyCommand.Argument(name: "verbose", value: verbose),
1129
1130
  RubyCommand.Argument(name: "danger_id", value: dangerId),
@@ -1132,7 +1133,8 @@ func danger(useBundleExec: Bool = true,
1132
1133
  RubyCommand.Argument(name: "fail_on_errors", value: failOnErrors),
1133
1134
  RubyCommand.Argument(name: "new_comment", value: newComment),
1134
1135
  RubyCommand.Argument(name: "base", value: base),
1135
- RubyCommand.Argument(name: "head", value: head)])
1136
+ RubyCommand.Argument(name: "head", value: head),
1137
+ RubyCommand.Argument(name: "pr", value: pr)])
1136
1138
  _ = runner.executeCommand(command)
1137
1139
  }
1138
1140
  func deleteKeychain(name: String? = nil,
@@ -1431,17 +1433,17 @@ func getGithubRelease(url: String,
1431
1433
  RubyCommand.Argument(name: "api_token", value: apiToken)])
1432
1434
  _ = runner.executeCommand(command)
1433
1435
  }
1434
- func getInfoPlistValue(key: String,
1435
- path: String) {
1436
+ @discardableResult func getInfoPlistValue(key: String,
1437
+ path: String) -> String {
1436
1438
  let command = RubyCommand(commandID: "", methodName: "get_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
1437
1439
  RubyCommand.Argument(name: "path", value: path)])
1438
- _ = runner.executeCommand(command)
1440
+ return runner.executeCommand(command)
1439
1441
  }
1440
- func getIpaInfoPlistValue(key: String,
1441
- ipa: String) {
1442
+ @discardableResult func getIpaInfoPlistValue(key: String,
1443
+ ipa: String) -> String {
1442
1444
  let command = RubyCommand(commandID: "", methodName: "get_ipa_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
1443
1445
  RubyCommand.Argument(name: "ipa", value: ipa)])
1444
- _ = runner.executeCommand(command)
1446
+ return runner.executeCommand(command)
1445
1447
  }
1446
1448
  func getProvisioningProfile(adhoc: Bool = false,
1447
1449
  development: Bool = false,
@@ -2856,7 +2858,8 @@ func slack(message: String? = nil,
2856
2858
  payload: String = "{}",
2857
2859
  defaultPayloads: [String]? = nil,
2858
2860
  attachmentProperties: String = "{}",
2859
- success: Bool = true) {
2861
+ success: Bool = true,
2862
+ failOnError: Bool = true) {
2860
2863
  let command = RubyCommand(commandID: "", methodName: "slack", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
2861
2864
  RubyCommand.Argument(name: "channel", value: channel),
2862
2865
  RubyCommand.Argument(name: "use_webhook_configured_username_and_icon", value: useWebhookConfiguredUsernameAndIcon),
@@ -2866,7 +2869,8 @@ func slack(message: String? = nil,
2866
2869
  RubyCommand.Argument(name: "payload", value: payload),
2867
2870
  RubyCommand.Argument(name: "default_payloads", value: defaultPayloads),
2868
2871
  RubyCommand.Argument(name: "attachment_properties", value: attachmentProperties),
2869
- RubyCommand.Argument(name: "success", value: success)])
2872
+ RubyCommand.Argument(name: "success", value: success),
2873
+ RubyCommand.Argument(name: "fail_on_error", value: failOnError)])
2870
2874
  _ = runner.executeCommand(command)
2871
2875
  }
2872
2876
  func slackTrain() {
@@ -11,4 +11,4 @@ class Gymfile: GymfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -11,4 +11,4 @@ class Matchfile: MatchfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -11,4 +11,4 @@ class Precheckfile: PrecheckfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -11,4 +11,4 @@ class Scanfile: ScanfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -11,4 +11,4 @@ class Screengrabfile: ScreengrabfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -11,4 +11,4 @@ class Snapshotfile: SnapshotfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.0
14
+ // Generated with fastlane 2.70.1
@@ -23,6 +23,9 @@ module FastlaneCore
23
23
  # [Boolean] is false by default. If set to true, also string values will not be asked to the user
24
24
  attr_accessor :optional
25
25
 
26
+ # [Boolean] is false by default. If set to true, type of the parameter will not be validated.
27
+ attr_accessor :skip_type_validation
28
+
26
29
  # [Array] array of conflicting option keys(@param key). This allows to resolve conflicts intelligently
27
30
  attr_accessor :conflicting_options
28
31
 
@@ -53,6 +56,7 @@ module FastlaneCore
53
56
  # You have to raise a specific exception if something goes wrong. Append .red after the string
54
57
  # @param is_string *DEPRECATED: Use `type` instead* (Boolean) is that parameter a string? Defaults to true. If it's true, the type string will be verified.
55
58
  # @param type (Class) the data type of this config item. Takes precedence over `is_string`. Use `:shell_string` to allow types `String`, `Hash` and `Array` that will be converted to shell-escaped strings
59
+ # @param skip_type_validation (Boolean) is false by default. If set to true, type of the parameter will not be validated.
56
60
  # @param optional (Boolean) is false by default. If set to true, also string values will not be asked to the user
57
61
  # @param conflicting_options ([]) array of conflicting option keys(@param key). This allows to resolve conflicts intelligently
58
62
  # @param conflict_block an optional block which is called when options conflict happens
@@ -29,7 +29,11 @@ module Produce
29
29
  passbook: [SERVICE_ON, SERVICE_OFF],
30
30
  push_notification: [SERVICE_ON, SERVICE_OFF],
31
31
  siri_kit: [SERVICE_ON, SERVICE_OFF],
32
- vpn_configuration: [SERVICE_ON, SERVICE_OFF]
32
+ vpn_configuration: [SERVICE_ON, SERVICE_OFF],
33
+ network_extension: [SERVICE_ON, SERVICE_OFF],
34
+ hotspot: [SERVICE_ON, SERVICE_OFF],
35
+ multipath: [SERVICE_ON, SERVICE_OFF],
36
+ nfc_tag_reading: [SERVICE_ON, SERVICE_OFF]
33
37
  }
34
38
 
35
39
  def run
@@ -34,7 +34,8 @@ module Produce
34
34
 
35
35
  def valid_services_for(options)
36
36
  allowed_keys = [:app_group, :apple_pay, :associated_domains, :data_protection, :game_center, :healthkit, :homekit,
37
- :wireless_conf, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :sirikit, :vpn_conf]
37
+ :wireless_conf, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :sirikit,
38
+ :vpn_conf, :network_extension, :hotspot, :multipath, :nfc_tag_reading]
38
39
  options.__hash__.select { |key, value| allowed_keys.include? key }
39
40
  end
40
41
 
@@ -210,6 +211,46 @@ module Produce
210
211
  end
211
212
  end
212
213
 
214
+ if options.network_extension
215
+ UI.message("\tNetwork Extension")
216
+
217
+ if on
218
+ app.update_service(Spaceship.app_service.network_extension.on)
219
+ else
220
+ app.update_service(Spaceship.app_service.network_extension.off)
221
+ end
222
+ end
223
+
224
+ if options.hotspot
225
+ UI.message("\tHotspot")
226
+
227
+ if on
228
+ app.update_service(Spaceship.app_service.hotspot.on)
229
+ else
230
+ app.update_service(Spaceship.app_service.hotspot.off)
231
+ end
232
+ end
233
+
234
+ if options.multipath
235
+ UI.message("\tMultipath")
236
+
237
+ if on
238
+ app.update_service(Spaceship.app_service.multipath.on)
239
+ else
240
+ app.update_service(Spaceship.app_service.multipath.off)
241
+ end
242
+ end
243
+
244
+ if options.nfc_tag_reading
245
+ UI.message("\tNFC Tag Reading")
246
+
247
+ if on
248
+ app.update_service(Spaceship.app_service.nfc_tag_reading.on)
249
+ else
250
+ app.update_service(Spaceship.app_service.nfc_tag_reading.off)
251
+ end
252
+ end
253
+
213
254
  updated
214
255
  end
215
256
 
@@ -58,6 +58,7 @@ enum SnapshotError: Error, CustomDebugStringConvertible {
58
58
  }
59
59
  }
60
60
 
61
+ @objcMembers
61
62
  open class Snapshot: NSObject {
62
63
  static var app: XCUIApplication!
63
64
  static var cacheDirectory: URL!
@@ -242,4 +243,4 @@ private extension CGFloat {
242
243
 
243
244
  // Please don't remove the lines below
244
245
  // They are used to detect outdated configuration files
245
- // SnapshotHelperVersion [1.7]
246
+ // SnapshotHelperVersion [1.8]
@@ -44,7 +44,7 @@ module Supply
44
44
  IMAGES_TYPES.each do |image_type|
45
45
  if ['featureGraphic'].include?(image_type)
46
46
  # we don't get all files in full resolution :(
47
- UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing feature graphics. Please copy your feature graphics into `metadata/android/en-US/images/`")
47
+ UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing feature graphic. Please copy your feature graphic to `metadata/android/#{listing.language}/images/featureGraphic.png`")
48
48
  next
49
49
  end
50
50
 
@@ -71,7 +71,7 @@ module Supply
71
71
  FileUtils.mkdir_p(File.join(containing, IMAGES_FOLDER_NAME, screenshot_type))
72
72
  end
73
73
 
74
- UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing screenshots. Please copy your screenshots into `metadata/android/en-US/images/`")
74
+ UI.message("Due to a limitation of the Google Play API, there is no way for `supply` to download your existing screenshots. Please copy your screenshots into `metadata/android/#{listing.language}/images/`")
75
75
  end
76
76
 
77
77
  def store_apk_listing(apk_listing)
@@ -168,7 +168,7 @@ module Supply
168
168
  # - Lesser than the greatest of any later (i.e. production) track
169
169
  # - Or lesser than the currently being uploaded if it's in an earlier (i.e. alpha) track
170
170
  def check_superseded_tracks(apk_version_codes)
171
- UI.message("Checking superseded tracks...")
171
+ UI.message("Checking superseded tracks, uploading '#{apk_version_codes}' to '#{Supply.config[:track]}'...")
172
172
  max_apk_version_code = apk_version_codes.max
173
173
  max_tracks_version_code = nil
174
174
 
@@ -176,26 +176,27 @@ module Supply
176
176
  config_track_index = tracks.index(Supply.config[:track])
177
177
 
178
178
  tracks.each_index do |track_index|
179
- next if track_index.eql? config_track_index
180
179
  track = tracks[track_index]
181
-
182
180
  track_version_codes = client.track_version_codes(track).sort
181
+ UI.verbose("Found '#{track_version_codes}' on track '#{track}'")
182
+
183
+ next if track_index.eql? config_track_index
183
184
  next if track_version_codes.empty?
184
185
 
185
186
  if max_tracks_version_code.nil?
186
187
  max_tracks_version_code = track_version_codes.max
187
- else
188
- removed_version_codes = track_version_codes.take_while do |v|
189
- v < max_tracks_version_code || (v < max_apk_version_code && track_index > config_track_index)
190
- end
188
+ end
191
189
 
192
- unless removed_version_codes.empty?
193
- keep_version_codes = track_version_codes - removed_version_codes
194
- max_tracks_version_code = keep_version_codes[0] unless keep_version_codes.empty?
195
- client.update_track(track, 1.0, keep_version_codes)
196
- UI.message("Superseded track '#{track}', removed '#{removed_version_codes}'")
197
- end
190
+ removed_version_codes = track_version_codes.take_while do |v|
191
+ v < max_tracks_version_code || (v < max_apk_version_code && track_index > config_track_index)
198
192
  end
193
+
194
+ next if removed_version_codes.empty?
195
+
196
+ keep_version_codes = track_version_codes - removed_version_codes
197
+ max_tracks_version_code = keep_version_codes[0] unless keep_version_codes.empty?
198
+ client.update_track(track, 1.0, keep_version_codes)
199
+ UI.message("Superseded track '#{track}', removed '#{removed_version_codes}'")
199
200
  end
200
201
  end
201
202
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fastlane
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.71.0.beta.20171220010004
4
+ version: 2.71.0.beta.20171221010003
5
5
  platform: ruby
6
6
  authors:
7
7
  - Felix Krause
@@ -15,7 +15,7 @@ authors:
15
15
  autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
- date: 2017-12-20 00:00:00.000000000 Z
18
+ date: 2017-12-21 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier