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

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