fastlane 2.70.3 → 2.71.0.beta.20171219010003

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.
Files changed (40) hide show
  1. checksums.yaml +4 -4
  2. data/fastlane/lib/fastlane/actions/build_ios_app.rb +1 -1
  3. data/fastlane/lib/fastlane/actions/danger.rb +0 -7
  4. data/fastlane/lib/fastlane/actions/docs/produce.md +1 -5
  5. data/fastlane/lib/fastlane/actions/download_dsyms.rb +1 -7
  6. data/fastlane/lib/fastlane/actions/get_build_number.rb +0 -4
  7. data/fastlane/lib/fastlane/actions/get_info_plist_value.rb +0 -4
  8. data/fastlane/lib/fastlane/actions/get_ipa_info_plist_value.rb +0 -4
  9. data/fastlane/lib/fastlane/actions/git_branch.rb +0 -4
  10. data/fastlane/lib/fastlane/actions/import_from_git.rb +2 -8
  11. data/fastlane/lib/fastlane/actions/modify_services.rb +1 -5
  12. data/fastlane/lib/fastlane/actions/slack.rb +9 -24
  13. data/fastlane/lib/fastlane/fast_file.rb +75 -9
  14. data/fastlane/lib/fastlane/server/socket_server.rb +3 -8
  15. data/fastlane/lib/fastlane/swift_fastlane_api_generator.rb +6 -11
  16. data/fastlane/lib/fastlane/version.rb +1 -1
  17. data/fastlane/swift/Deliverfile.swift +1 -1
  18. data/fastlane/swift/Fastlane.swift +14 -18
  19. data/fastlane/swift/Gymfile.swift +1 -1
  20. data/fastlane/swift/Matchfile.swift +1 -1
  21. data/fastlane/swift/Precheckfile.swift +1 -1
  22. data/fastlane/swift/Scanfile.swift +1 -1
  23. data/fastlane/swift/Screengrabfile.swift +1 -1
  24. data/fastlane/swift/Snapshotfile.swift +1 -1
  25. data/fastlane_core/lib/fastlane_core/analytics/action_launch_context.rb +1 -1
  26. data/fastlane_core/lib/fastlane_core/configuration/config_item.rb +0 -4
  27. data/fastlane_core/lib/fastlane_core/configuration/configuration.rb +7 -12
  28. data/fastlane_core/lib/fastlane_core/helper.rb +1 -1
  29. data/fastlane_core/lib/fastlane_core/ios_app_identifier_guesser.rb +3 -44
  30. data/fastlane_core/lib/fastlane_core.rb +0 -1
  31. data/produce/lib/produce/developer_center.rb +1 -5
  32. data/produce/lib/produce/service.rb +1 -42
  33. data/snapshot/lib/assets/SnapshotHelper.swift +1 -2
  34. data/supply/lib/supply/setup.rb +2 -2
  35. data/supply/lib/supply/uploader.rb +13 -14
  36. metadata +19 -23
  37. data/fastlane/lib/fastlane/.DS_Store +0 -0
  38. data/fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/liebowitz.xcuserdatad/UserInterfaceState.xcuserstate +0 -0
  39. data/fastlane_core/lib/fastlane_core/tag_version.rb +0 -24
  40. data/precheck/lib/.DS_Store +0 -0
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: db2a79f0ea8502192be084f553b7611f25f83314
4
- data.tar.gz: 99effa647bdaaab8564baded99feaa20306d10f9
3
+ metadata.gz: d1fd252b22d17a46eaec58c8a919ac167ac5f852
4
+ data.tar.gz: 2785ab29b9e222048881ab02ef16eaae06373234
5
5
  SHA512:
6
- metadata.gz: e55c92ffa57592da478a44ebcb77cebdcfd7e9e32324daf6e59d4014e5c5e0da4a4659038404d0980b97d74fafc17df87d581c9ac71f229ee09c41060ada72c1
7
- data.tar.gz: 9ea6bc9cde31f71aad51cfc0fe2af49fa6caccf818c053d1f1fa8619571a7f76257ddb1c87e0687a20ced19912727f0f4c57fed9538c7a6f8f0a44bca7b19835
6
+ metadata.gz: b7a1c6c6ab62d30df653c582a0736939fe4bf174f5757c2e4f4907e534678bd257d6bb59e1b60bb4dc6f63aa3712b0ff29738481d7d7155d0407ddbe29131ae7
7
+ data.tar.gz: ddec52067646e9f0e33d7641e1cac5f9ea3d8d81a07a6bfc139546c9932f6b5fa2dc65083ac284dca54fa121d8d08a555fdefac342fd6b5f5b97a862e4d6e8d2
@@ -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: "iOS 11.1" # use SDK as the name or path of the base SDK when building the project.
124
+ sdk: "10.0" # 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"'
@@ -13,14 +13,12 @@ module Fastlane
13
13
  dangerfile = params[:dangerfile]
14
14
  base = params[:base]
15
15
  head = params[:head]
16
- pr = params[:pr]
17
16
  cmd << "--danger_id=#{danger_id}" if danger_id
18
17
  cmd << "--dangerfile=#{dangerfile}" if dangerfile
19
18
  cmd << "--fail-on-errors=true" if params[:fail_on_errors]
20
19
  cmd << "--new-comment" if params[:new_comment]
21
20
  cmd << "--base=#{base}" if base
22
21
  cmd << "--head=#{head}" if head
23
- cmd << "pr #{pr}" if pr
24
22
 
25
23
  ENV['DANGER_GITHUB_API_TOKEN'] = params[:github_api_token] if params[:github_api_token]
26
24
 
@@ -87,11 +85,6 @@ module Fastlane
87
85
  env_name: "FL_DANGER_HEAD",
88
86
  description: "A branch/tag/commit to use as the head. [master|dev|stable]",
89
87
  is_string: true,
90
- optional: true),
91
- FastlaneCore::ConfigItem.new(key: :pr,
92
- env_name: "FL_DANGER_PR",
93
- description: "Run danger on a specific pull request. e.g. \"https://github.com/danger/danger/pull/518\"",
94
- is_string: true,
95
88
  optional: true)
96
89
  ]
97
90
  end
@@ -204,11 +204,7 @@ 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"
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"
207
+ vpn_configuration: "on" # Valid values: "on", "off"
212
208
  }
213
209
  )
214
210
 
@@ -5,7 +5,6 @@ module Fastlane
5
5
  end
6
6
 
7
7
  class DownloadDsymsAction < Action
8
- # rubocop:disable Metrics/PerceivedComplexity
9
8
  def self.run(params)
10
9
  require 'spaceship'
11
10
  require 'net/http'
@@ -30,12 +29,8 @@ module Fastlane
30
29
  # Set version if it is latest
31
30
  if version == 'latest'
32
31
  # Try to grab the edit version first, else fallback to live version
33
- UI.message("Looking for latest version...")
34
32
  latest_version = app.edit_version(platform: platform) || app.live_version(platform: platform)
35
-
36
- UI.user_error!("Could not find latest version for your app, please try setting a specific version") if latest_version.version.nil?
37
-
38
- version = latest_version.version
33
+ version = nil
39
34
  build_number = latest_version.build_version
40
35
  end
41
36
 
@@ -87,7 +82,6 @@ module Fastlane
87
82
  UI.error("No dSYM files found on iTunes Connect - this usually happens when no recompling happened yet")
88
83
  end
89
84
  end
90
- # rubocop:enable Metrics/PerceivedComplexity
91
85
 
92
86
  def self.write_dsym(data, bundle_id, train_number, build_number, output_directory)
93
87
  file_name = "#{bundle_id}-#{train_number}-#{build_number}.dSYM.zip"
@@ -85,10 +85,6 @@ module Fastlane
85
85
  ]
86
86
  end
87
87
 
88
- def self.return_type
89
- :string
90
- end
91
-
92
88
  def self.category
93
89
  :project
94
90
  end
@@ -66,10 +66,6 @@ module Fastlane
66
66
  ]
67
67
  end
68
68
 
69
- def self.return_type
70
- :string
71
- end
72
-
73
69
  def self.category
74
70
  :project
75
71
  end
@@ -69,10 +69,6 @@ module Fastlane
69
69
  ]
70
70
  end
71
71
 
72
- def self.return_type
73
- :string
74
- end
75
-
76
72
  def self.category
77
73
  :project
78
74
  end
@@ -44,10 +44,6 @@ module Fastlane
44
44
  ]
45
45
  end
46
46
 
47
- def self.return_type
48
- :string
49
- end
50
-
51
47
  def self.category
52
48
  :source_control
53
49
  end
@@ -34,7 +34,7 @@ module Fastlane
34
34
  default_value: 'fastlane/Fastfile',
35
35
  optional: true),
36
36
  FastlaneCore::ConfigItem.new(key: :version,
37
- description: "The version to checkout on the respository. Optimistic match operator or multiple conditions can be used to select the latest version within constraints",
37
+ description: "The version to checkout on the respository. Optimistic operator can be used to select the latest version within constraints",
38
38
  default_value: nil,
39
39
  optional: true)
40
40
  ]
@@ -54,13 +54,7 @@ module Fastlane
54
54
  url: "git@github.com:fastlane/fastlane.git", # The URL of the repository to import the Fastfile from.
55
55
  branch: "HEAD", # The branch to checkout on the repository. Defaults to `HEAD`.
56
56
  path: "fastlane/Fastfile" # The path of the Fastfile in the repository. Defaults to `fastlane/Fastfile`.
57
- version: "~> 1.0.0" # The version to checkout on the repository. Optimistic match operator can be used to select the latest version within constraints.
58
- )',
59
- 'import_from_git(
60
- url: "git@github.com:fastlane/fastlane.git", # The URL of the repository to import the Fastfile from.
61
- branch: "HEAD", # The branch to checkout on the repository. Defaults to `HEAD`.
62
- path: "fastlane/Fastfile" # The path of the Fastfile in the repository. Defaults to `fastlane/Fastfile`.
63
- version: [">= 1.1.0", "< 2.0.0"] # The version to checkout on the repository. Multiple conditions can be used to select the latest version within constraints.
57
+ version: "~> 1.0.0" #The version to checkout on the respository. Optimistic operator can be used to select the latest version within constraints.
64
58
  )'
65
59
  ]
66
60
  end
@@ -58,11 +58,7 @@ module Fastlane
58
58
  passbook: 'passbook',
59
59
  push_notification: 'push_notification',
60
60
  siri_kit: 'sirikit',
61
- vpn_configuration: 'vpn_conf',
62
- network_extension: 'network_extension',
63
- hotspot: 'hotspot',
64
- multipath: 'multipath',
65
- nfc_tag_reading: 'nfc_tag_reading'
61
+ vpn_configuration: 'vpn_conf'
66
62
  }
67
63
  end
68
64
 
@@ -38,24 +38,15 @@ module Fastlane
38
38
 
39
39
  return [notifier, slack_attachment] if Helper.is_test? # tests will verify the slack attachments and other properties
40
40
 
41
- begin
42
- result = notifier.ping '',
43
- icon_url: icon_url,
44
- attachments: [slack_attachment]
45
- rescue => exception
46
- UI.error("Exception: #{exception}")
47
- ensure
48
- if !result.nil? && result.code.to_i == 200
49
- UI.success('Successfully sent Slack notification')
50
- else
51
- UI.verbose(result) unless result.nil?
52
- message = "Error pushing Slack message, maybe the integration has no permission to post on this channel? Try removing the channel parameter in your Fastfile, this is usually caused by a misspelled or changed group/channel name or an expired SLACK_URL"
53
- if options[:fail_on_error]
54
- UI.user_error!(message)
55
- else
56
- UI.error(message)
57
- end
58
- end
41
+ result = notifier.ping '',
42
+ icon_url: icon_url,
43
+ attachments: [slack_attachment]
44
+
45
+ if result.code.to_i == 200
46
+ UI.success('Successfully sent Slack notification')
47
+ else
48
+ UI.verbose(result)
49
+ UI.user_error!("Error pushing Slack message, maybe the integration has no permission to post on this channel? Try removing the channel parameter in your Fastfile, this is usually caused by a misspelled or changed group/channel name or an expired SLACK_URL")
59
50
  end
60
51
  end
61
52
 
@@ -118,12 +109,6 @@ module Fastlane
118
109
  description: "Was this build successful? (true/false)",
119
110
  optional: true,
120
111
  default_value: true,
121
- is_string: false),
122
- FastlaneCore::ConfigItem.new(key: :fail_on_error,
123
- env_name: "FL_SLACK_FAIL_ON_ERROR",
124
- description: "Should an error sending the slack notification cause a failure? (true/false)",
125
- optional: true,
126
- default_value: true,
127
112
  is_string: false)
128
113
  ]
129
114
  end
@@ -1,5 +1,3 @@
1
- require "rubygems/requirement"
2
-
3
1
  module Fastlane
4
2
  class FastFile
5
3
  # Stores all relevant information from the currently running process
@@ -231,7 +229,7 @@ module Fastlane
231
229
  # @param url [String] The git URL to clone the repository from
232
230
  # @param branch [String] The branch to checkout in the repository
233
231
  # @param path [String] The path to the Fastfile
234
- # @param version [String, Array] Version requirement for repo tags
232
+ # @param verion [String] Version of the required Fastlane version
235
233
  def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil)
236
234
  UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
237
235
 
@@ -253,10 +251,13 @@ module Fastlane
253
251
  Actions.sh("GIT_TERMINAL_PROMPT=0 git clone '#{url}' '#{clone_folder}' --depth 1 -n #{branch_option}")
254
252
 
255
253
  unless version.nil?
256
- req = Gem::Requirement.new(version)
257
- all_tags = fetch_remote_tags(folder: clone_folder)
258
- checkout_param = all_tags.select { |t| req =~ FastlaneCore::TagVersion.new(t) }.last
259
- UI.user_error! "No tag found matching #{version.inspect}" if checkout_param.nil?
254
+ git_tags = fetch_remote_tags(folder: clone_folder)
255
+
256
+ # Separate version from optimistic operator
257
+ version_number = version(version_string: version)
258
+ operator = operator(version_string: version)
259
+
260
+ checkout_param = checkout_param_for_operator(operator: operator, version: version_number, git_tags: git_tags)
260
261
  end
261
262
 
262
263
  Actions.sh("cd '#{clone_folder}' && git checkout #{checkout_param} '#{path}'")
@@ -292,10 +293,75 @@ module Fastlane
292
293
  git_tags_string = Actions.sh("cd '#{folder}' && git tag -l")
293
294
  git_tags = git_tags_string.split("\n")
294
295
 
296
+ # Delete tags that are not a real version number
297
+ git_tags.delete_if { |tag| Gem::Version.correct?(tag) != 0 }
298
+
295
299
  # Sort tags based on their version number
300
+ git_tags.sort_by { |tag| Gem::Version.new(tag) }
301
+
296
302
  return git_tags
297
- .select { |tag| FastlaneCore::TagVersion.correct?(tag) }
298
- .sort_by { |tag| FastlaneCore::TagVersion.new(tag) }
303
+ end
304
+
305
+ def checkout_param_for_operator(operator: nil, version: nil, git_tags: nil)
306
+ # ~> should select the latest version withing constraints.
307
+ # -> should select a specific version without fallback.
308
+ if operator == "~>"
309
+ return checkout_param_twiddle_wakka(version: version, git_tags: git_tags)
310
+
311
+ elsif operator == "->" || operator.nil?
312
+ return checkout_param_specific_version(version: version, git_tags: git_tags)
313
+
314
+ else
315
+ UI.user_error!("The specified operator \"#{operator}\" in \"#{version}\" is unknown. Please use one of these '~> ->'")
316
+ end
317
+ end
318
+
319
+ def checkout_param_specific_version(version: nil, git_tags: nil)
320
+ # Search matching version in array
321
+ matching_git_tags = git_tags.select do |tag|
322
+ tag == version
323
+ end
324
+
325
+ UI.user_error!("The specified version \"#{version}\" doesn't exist") if matching_git_tags.count == 0
326
+ return matching_git_tags.last
327
+ end
328
+
329
+ def checkout_param_twiddle_wakka(version: nil, git_tags: nil)
330
+ # Drop last specified digit in version
331
+ last_dot_index = version.rindex('.')
332
+ version_range = version[0..last_dot_index - 1]
333
+
334
+ # Search matching version in array
335
+ matching_git_tags = git_tags.select do |tag|
336
+ tag.start_with?(version_range)
337
+ end
338
+
339
+ UI.user_error!("No version found within the \"#{version_range}.*\" range") if matching_git_tags.count == 0
340
+
341
+ return matching_git_tags.last
342
+ end
343
+
344
+ def operator(version_string: nil)
345
+ version_info = version_range_info(version_string: version_string)
346
+
347
+ # version_info will have 2 elements if an optimistic operator is specified.
348
+ if version_info.count > 1
349
+
350
+ # Optimistic operator is always the first part. e.g.: ["~>", "2.0.0"]
351
+ return version_info.first
352
+ end
353
+
354
+ return nil
355
+ end
356
+
357
+ def version(version_string: nil)
358
+ version_info = version_range_info(version_string: version_string)
359
+ return version_info.last
360
+ end
361
+
362
+ def version_range_info(version_string: nil)
363
+ # Separate version from optimistic operator
364
+ return version_string.split(" ")
299
365
  end
300
366
 
301
367
  #####################################################
@@ -174,8 +174,7 @@ module Fastlane
174
174
  return_value = ""
175
175
  end
176
176
 
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)
177
+ return JSON.generate(return_value.to_s)
179
178
  end
180
179
 
181
180
  def process_value_as_array_of_strings(return_value: nil)
@@ -183,7 +182,6 @@ module Fastlane
183
182
  return_value = []
184
183
  end
185
184
 
186
- # quirks_mode shouldn't be required for real objects
187
185
  return JSON.generate(return_value)
188
186
  end
189
187
 
@@ -192,7 +190,6 @@ module Fastlane
192
190
  return_value = {}
193
191
  end
194
192
 
195
- # quirks_mode shouldn't be required for real objects
196
193
  return JSON.generate(return_value)
197
194
  end
198
195
 
@@ -201,8 +198,7 @@ module Fastlane
201
198
  return_value = false
202
199
  end
203
200
 
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)
201
+ return JSON.generate(return_value)
206
202
  end
207
203
 
208
204
  def process_value_as_int(return_value: nil)
@@ -210,8 +206,7 @@ module Fastlane
210
206
  return_value = 0
211
207
  end
212
208
 
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)
209
+ return JSON.generate(return_value)
215
210
  end
216
211
  end
217
212
  end
@@ -79,13 +79,11 @@ module Fastlane
79
79
  file_content += autogen_version_warning_text_array
80
80
 
81
81
  file_content = file_content.join("\n")
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)
82
+ target_path = File.join(@target_output_path, "Fastlane.swift")
83
+ File.write(target_path, file_content)
84
+ UI.success(target_path)
85
85
 
86
- files_generated = [fastlane_swift_api_path]
87
- files_generated += generate_default_implementations(tool_details: tool_details)
88
- return files_generated
86
+ generate_default_implementation_opening(tool_details: tool_details)
89
87
  end
90
88
 
91
89
  def write_lanefile(lanefile_implementation_opening: nil, class_name: nil, tool_name: nil)
@@ -111,20 +109,17 @@ module Fastlane
111
109
  target_path = File.join(@target_output_path, "#{class_name}.swift")
112
110
  File.write(target_path, file_content)
113
111
  UI.success(target_path)
114
- return target_path
115
112
  end
116
113
 
117
- def generate_default_implementations(tool_details: nil)
118
- files_generated = []
114
+ def generate_default_implementation_opening(tool_details: nil)
119
115
  tool_details.each do |tool_detail|
120
116
  lanefile_implementation_opening = "class #{tool_detail.swift_class}: #{tool_detail.swift_protocol} {"
121
- files_generated << write_lanefile(
117
+ write_lanefile(
122
118
  lanefile_implementation_opening: lanefile_implementation_opening,
123
119
  class_name: tool_detail.swift_class,
124
120
  tool_name: tool_detail.command_line_tool_name
125
121
  )
126
122
  end
127
- return files_generated
128
123
  end
129
124
 
130
125
  def generate_lanefile_parsing_functions
@@ -1,5 +1,5 @@
1
1
  module Fastlane
2
- VERSION = '2.70.3'.freeze
2
+ VERSION = '2.71.0.beta.20171219010003'.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.2
14
+ // Generated with fastlane 2.70.0
@@ -1123,8 +1123,7 @@ func danger(useBundleExec: Bool = true,
1123
1123
  failOnErrors: Bool = false,
1124
1124
  newComment: Bool = false,
1125
1125
  base: String? = nil,
1126
- head: String? = nil,
1127
- pr: String? = nil) {
1126
+ head: String? = nil) {
1128
1127
  let command = RubyCommand(commandID: "", methodName: "danger", className: nil, args: [RubyCommand.Argument(name: "use_bundle_exec", value: useBundleExec),
1129
1128
  RubyCommand.Argument(name: "verbose", value: verbose),
1130
1129
  RubyCommand.Argument(name: "danger_id", value: dangerId),
@@ -1133,8 +1132,7 @@ func danger(useBundleExec: Bool = true,
1133
1132
  RubyCommand.Argument(name: "fail_on_errors", value: failOnErrors),
1134
1133
  RubyCommand.Argument(name: "new_comment", value: newComment),
1135
1134
  RubyCommand.Argument(name: "base", value: base),
1136
- RubyCommand.Argument(name: "head", value: head),
1137
- RubyCommand.Argument(name: "pr", value: pr)])
1135
+ RubyCommand.Argument(name: "head", value: head)])
1138
1136
  _ = runner.executeCommand(command)
1139
1137
  }
1140
1138
  func deleteKeychain(name: String? = nil,
@@ -1395,9 +1393,9 @@ func gcovr() {
1395
1393
  let command = RubyCommand(commandID: "", methodName: "gcovr", className: nil, args: [])
1396
1394
  _ = runner.executeCommand(command)
1397
1395
  }
1398
- @discardableResult func getBuildNumber(xcodeproj: String? = nil) -> String {
1396
+ func getBuildNumber(xcodeproj: String? = nil) {
1399
1397
  let command = RubyCommand(commandID: "", methodName: "get_build_number", className: nil, args: [RubyCommand.Argument(name: "xcodeproj", value: xcodeproj)])
1400
- return runner.executeCommand(command)
1398
+ _ = runner.executeCommand(command)
1401
1399
  }
1402
1400
  func getBuildNumberRepository(useHgRevisionNumber: Bool = false) {
1403
1401
  let command = RubyCommand(commandID: "", methodName: "get_build_number_repository", className: nil, args: [RubyCommand.Argument(name: "use_hg_revision_number", value: useHgRevisionNumber)])
@@ -1433,17 +1431,17 @@ func getGithubRelease(url: String,
1433
1431
  RubyCommand.Argument(name: "api_token", value: apiToken)])
1434
1432
  _ = runner.executeCommand(command)
1435
1433
  }
1436
- @discardableResult func getInfoPlistValue(key: String,
1437
- path: String) -> String {
1434
+ func getInfoPlistValue(key: String,
1435
+ path: String) {
1438
1436
  let command = RubyCommand(commandID: "", methodName: "get_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
1439
1437
  RubyCommand.Argument(name: "path", value: path)])
1440
- return runner.executeCommand(command)
1438
+ _ = runner.executeCommand(command)
1441
1439
  }
1442
- @discardableResult func getIpaInfoPlistValue(key: String,
1443
- ipa: String) -> String {
1440
+ func getIpaInfoPlistValue(key: String,
1441
+ ipa: String) {
1444
1442
  let command = RubyCommand(commandID: "", methodName: "get_ipa_info_plist_value", className: nil, args: [RubyCommand.Argument(name: "key", value: key),
1445
1443
  RubyCommand.Argument(name: "ipa", value: ipa)])
1446
- return runner.executeCommand(command)
1444
+ _ = runner.executeCommand(command)
1447
1445
  }
1448
1446
  func getProvisioningProfile(adhoc: Bool = false,
1449
1447
  development: Bool = false,
@@ -1527,9 +1525,9 @@ func gitAdd(path: String? = nil,
1527
1525
  RubyCommand.Argument(name: "pathspec", value: pathspec)])
1528
1526
  _ = runner.executeCommand(command)
1529
1527
  }
1530
- @discardableResult func gitBranch() -> String {
1528
+ func gitBranch() {
1531
1529
  let command = RubyCommand(commandID: "", methodName: "git_branch", className: nil, args: [])
1532
- return runner.executeCommand(command)
1530
+ _ = runner.executeCommand(command)
1533
1531
  }
1534
1532
  func gitCommit(path: String,
1535
1533
  message: String) {
@@ -2858,8 +2856,7 @@ func slack(message: String? = nil,
2858
2856
  payload: String = "{}",
2859
2857
  defaultPayloads: [String]? = nil,
2860
2858
  attachmentProperties: String = "{}",
2861
- success: Bool = true,
2862
- failOnError: Bool = true) {
2859
+ success: Bool = true) {
2863
2860
  let command = RubyCommand(commandID: "", methodName: "slack", className: nil, args: [RubyCommand.Argument(name: "message", value: message),
2864
2861
  RubyCommand.Argument(name: "channel", value: channel),
2865
2862
  RubyCommand.Argument(name: "use_webhook_configured_username_and_icon", value: useWebhookConfiguredUsernameAndIcon),
@@ -2869,8 +2866,7 @@ func slack(message: String? = nil,
2869
2866
  RubyCommand.Argument(name: "payload", value: payload),
2870
2867
  RubyCommand.Argument(name: "default_payloads", value: defaultPayloads),
2871
2868
  RubyCommand.Argument(name: "attachment_properties", value: attachmentProperties),
2872
- RubyCommand.Argument(name: "success", value: success),
2873
- RubyCommand.Argument(name: "fail_on_error", value: failOnError)])
2869
+ RubyCommand.Argument(name: "success", value: success)])
2874
2870
  _ = runner.executeCommand(command)
2875
2871
  }
2876
2872
  func slackTrain() {
@@ -11,4 +11,4 @@ class Gymfile: GymfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -11,4 +11,4 @@ class Matchfile: MatchfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -11,4 +11,4 @@ class Precheckfile: PrecheckfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -11,4 +11,4 @@ class Scanfile: ScanfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -11,4 +11,4 @@ class Screengrabfile: ScreengrabfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -11,4 +11,4 @@ class Snapshotfile: SnapshotfileProtocol {
11
11
 
12
12
 
13
13
 
14
- // Generated with fastlane 2.70.2
14
+ // Generated with fastlane 2.70.0
@@ -20,7 +20,7 @@ module FastlaneCore
20
20
  app_id_guesser = FastlaneCore::AppIdentifierGuesser.new(args: args)
21
21
  return self.new(
22
22
  action_name: action_name,
23
- p_hash: app_id_guesser.p_hash || UNKNOWN_P_HASH,
23
+ p_hash: app_id_guesser.p_hash,
24
24
  platform: app_id_guesser.platform,
25
25
  configuration_language: configuration_language
26
26
  )
@@ -23,9 +23,6 @@ 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
-
29
26
  # [Array] array of conflicting option keys(@param key). This allows to resolve conflicts intelligently
30
27
  attr_accessor :conflicting_options
31
28
 
@@ -56,7 +53,6 @@ module FastlaneCore
56
53
  # You have to raise a specific exception if something goes wrong. Append .red after the string
57
54
  # @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.
58
55
  # @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.
60
56
  # @param optional (Boolean) is false by default. If set to true, also string values will not be asked to the user
61
57
  # @param conflicting_options ([]) array of conflicting option keys(@param key). This allows to resolve conflicts intelligently
62
58
  # @param conflict_block an optional block which is called when options conflict happens
@@ -163,9 +163,14 @@ module FastlaneCore
163
163
 
164
164
  self.config_file_name = config_file_name
165
165
 
166
- path = FastlaneCore::Configuration.find_configuration_file_path(config_file_name: config_file_name)
167
- return if path.nil?
166
+ paths = []
167
+ paths += Dir["./fastlane/#{self.config_file_name}"]
168
+ paths += Dir["./.fastlane/#{self.config_file_name}"]
169
+ paths += Dir["./#{self.config_file_name}"]
170
+ paths += Dir["./fastlane_core/spec/fixtures/#{self.config_file_name}"] if Helper.is_test?
171
+ return if paths.count == 0
168
172
 
173
+ path = paths.first
169
174
  begin
170
175
  configuration_file = ConfigurationFile.new(self, path, block_for_missing, skip_printing_values)
171
176
  options = configuration_file.options
@@ -191,16 +196,6 @@ module FastlaneCore
191
196
  configuration_file
192
197
  end
193
198
 
194
- def self.find_configuration_file_path(config_file_name: nil)
195
- paths = []
196
- paths += Dir["./fastlane/#{config_file_name}"]
197
- paths += Dir["./.fastlane/#{config_file_name}"]
198
- paths += Dir["./#{config_file_name}"]
199
- paths += Dir["./fastlane_core/spec/fixtures/#{config_file_name}"] if Helper.is_test?
200
- return nil if paths.count == 0
201
- return paths.first
202
- end
203
-
204
199
  #####################################################
205
200
  # @!group Actually using the class
206
201
  #####################################################
@@ -141,7 +141,7 @@ module FastlaneCore
141
141
  # @return the full path to the Xcode developer tools of the currently
142
142
  # running system
143
143
  def self.xcode_path
144
- return "" unless self.is_mac?
144
+ return "" if self.is_test? and !self.is_mac?
145
145
  `xcode-select -p`.delete("\n") + "/"
146
146
  end
147
147
 
@@ -1,6 +1,5 @@
1
1
  module FastlaneCore
2
2
  class IOSAppIdentifierGuesser
3
- APP_ID_REGEX = /var\s*appIdentifier:\s*String\?{0,1}\s*\[?\]?\s*{\s*return\s*\[?\s*"(\s*[a-zA-Z.-]+\s*)"\s*\]?\s*}/
4
3
  class << self
5
4
  def guess_app_identifier_from_args(args)
6
5
  # args example: ["-a", "com.krausefx.app", "--team_id", "5AA97AAHK2"]
@@ -25,7 +24,7 @@ module FastlaneCore
25
24
  CredentialsManager::AppfileConfig.try_fetch_value(:app_identifier)
26
25
  end
27
26
 
28
- def fetch_app_identifier_from_ruby_file(file_name)
27
+ def fetch_app_identifier_from_file(file_name)
29
28
  # we only care about the app_identifier item in the configuration file, so
30
29
  # build an options array & Configuration with just that one key and it will
31
30
  # be fetched if it is present in the config file
@@ -42,52 +41,12 @@ module FastlaneCore
42
41
  nil
43
42
  end
44
43
 
45
- def fetch_app_identifier_from_swift_file(file_name)
46
- swift_config_file_path = FastlaneCore::Configuration.find_configuration_file_path(config_file_name: file_name)
47
- return nil if swift_config_file_path.nil?
48
-
49
- # Deliverfile.swift, Snapfile.swift, Appfile.swift all look like:
50
- # var appIdentifier: String? { return nil }
51
- # var appIdentifier: String { return "" }
52
-
53
- # Matchfile.swift is the odd one out
54
- # var appIdentifier: [String] { return [] }
55
- #
56
-
57
- swift_config_file_path = File.expand_path(swift_config_file_path)
58
- swift_config_content = File.read(swift_config_file_path)
59
-
60
- swift_config_content.split("\n").reject(&:empty?).each do |line|
61
- application_id = match_swift_application_id(text_line: line)
62
- return application_id if application_id
63
- end
64
- return nil
65
- rescue
66
- # any option/file error here should just be treated as identifier not found
67
- return nil
68
- end
69
-
70
- def match_swift_application_id(text_line: nil)
71
- text_line.strip!
72
- application_id_match = APP_ID_REGEX.match(text_line)
73
- return application_id_match[1].strip if application_id_match
74
-
75
- return nil
76
- end
77
-
78
44
  def guess_app_identifier_from_config_files
79
45
  ["Deliverfile", "Gymfile", "Snapfile", "Matchfile"].each do |current|
80
- app_identifier = self.fetch_app_identifier_from_ruby_file(current)
46
+ app_identifier = self.fetch_app_identifier_from_file(current)
81
47
  return app_identifier if app_identifier
82
48
  end
83
-
84
- # if we're swifty, let's look there
85
- # this isn't the same list as above
86
- ["Deliverfile.swift", "Snapfile.swift", "Appfile.swift", "Matchfile.swift"].each do |current|
87
- app_identifier = self.fetch_app_identifier_from_swift_file(current)
88
- return app_identifier if app_identifier
89
- end
90
- return nil
49
+ nil
91
50
  end
92
51
 
93
52
  # make a best-guess for the app_identifier for this project, using most-reliable signals
@@ -46,7 +46,6 @@ require 'fastlane_core/analytics/action_launch_context'
46
46
  require 'fastlane_core/analytics/analytics_event_builder'
47
47
  require 'fastlane_core/analytics/analytics_ingester_client'
48
48
  require 'fastlane_core/analytics/analytics_session'
49
- require 'fastlane_core/tag_version'
50
49
 
51
50
  # Third Party code
52
51
  require 'colored'
@@ -29,11 +29,7 @@ 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],
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]
32
+ vpn_configuration: [SERVICE_ON, SERVICE_OFF]
37
33
  }
38
34
 
39
35
  def run
@@ -34,8 +34,7 @@ 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,
38
- :vpn_conf, :network_extension, :hotspot, :multipath, :nfc_tag_reading]
37
+ :wireless_conf, :icloud, :in_app_purchase, :inter_app_audio, :passbook, :push_notification, :sirikit, :vpn_conf]
39
38
  options.__hash__.select { |key, value| allowed_keys.include? key }
40
39
  end
41
40
 
@@ -211,46 +210,6 @@ module Produce
211
210
  end
212
211
  end
213
212
 
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
-
254
213
  updated
255
214
  end
256
215
 
@@ -58,7 +58,6 @@ enum SnapshotError: Error, CustomDebugStringConvertible {
58
58
  }
59
59
  }
60
60
 
61
- @objcMembers
62
61
  open class Snapshot: NSObject {
63
62
  static var app: XCUIApplication!
64
63
  static var cacheDirectory: URL!
@@ -243,4 +242,4 @@ private extension CGFloat {
243
242
 
244
243
  // Please don't remove the lines below
245
244
  // They are used to detect outdated configuration files
246
- // SnapshotHelperVersion [1.8]
245
+ // SnapshotHelperVersion [1.7]
@@ -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 graphic. Please copy your feature graphic to `metadata/android/#{listing.language}/images/featureGraphic.png`")
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/`")
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/#{listing.language}/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/en-US/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, uploading '#{apk_version_codes}' to '#{Supply.config[:track]}'...")
171
+ UI.message("Checking superseded tracks...")
172
172
  max_apk_version_code = apk_version_codes.max
173
173
  max_tracks_version_code = nil
174
174
 
@@ -176,27 +176,26 @@ 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
179
180
  track = tracks[track_index]
180
- track_version_codes = client.track_version_codes(track).sort
181
- UI.verbose("Found '#{track_version_codes}' on track '#{track}'")
182
181
 
183
- next if track_index.eql? config_track_index
182
+ track_version_codes = client.track_version_codes(track).sort
184
183
  next if track_version_codes.empty?
185
184
 
186
185
  if max_tracks_version_code.nil?
187
186
  max_tracks_version_code = track_version_codes.max
188
- end
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
189
191
 
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)
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
192
198
  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}'")
200
199
  end
201
200
  end
202
201
 
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.70.3
4
+ version: 2.71.0.beta.20171219010003
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-21 00:00:00.000000000 Z
18
+ date: 2017-12-19 00:00:00.000000000 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: slack-notifier
@@ -677,14 +677,14 @@ dependencies:
677
677
  requirements:
678
678
  - - "~>"
679
679
  - !ruby/object:Gem::Version
680
- version: 0.9.11
680
+ version: 0.8.7.4
681
681
  type: :development
682
682
  prerelease: false
683
683
  version_requirements: !ruby/object:Gem::Requirement
684
684
  requirements:
685
685
  - - "~>"
686
686
  - !ruby/object:Gem::Version
687
- version: 0.9.11
687
+ version: 0.8.7.4
688
688
  - !ruby/object:Gem::Dependency
689
689
  name: webmock
690
690
  requirement: !ruby/object:Gem::Requirement
@@ -848,7 +848,6 @@ files:
848
848
  - fastlane/lib/assets/s3_plist_template.erb
849
849
  - fastlane/lib/assets/s3_version_template.erb
850
850
  - fastlane/lib/fastlane.rb
851
- - fastlane/lib/fastlane/.DS_Store
852
851
  - fastlane/lib/fastlane/action.rb
853
852
  - fastlane/lib/fastlane/action_collector.rb
854
853
  - fastlane/lib/fastlane/actions/README.md
@@ -1162,7 +1161,6 @@ files:
1162
1161
  - fastlane/swift/Fastlane.swift
1163
1162
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.pbxproj
1164
1163
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/contents.xcworkspacedata
1165
- - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/project.xcworkspace/xcuserdata/liebowitz.xcuserdatad/UserInterfaceState.xcuserstate
1166
1164
  - fastlane/swift/FastlaneSwiftRunner/FastlaneSwiftRunner.xcodeproj/xcshareddata/xcschemes/FastlaneRunner.xcscheme
1167
1165
  - fastlane/swift/Gymfile.swift
1168
1166
  - fastlane/swift/GymfileProtocol.swift
@@ -1227,7 +1225,6 @@ files:
1227
1225
  - fastlane_core/lib/fastlane_core/provisioning_profile.rb
1228
1226
  - fastlane_core/lib/fastlane_core/string_filters.rb
1229
1227
  - fastlane_core/lib/fastlane_core/swag.rb
1230
- - fastlane_core/lib/fastlane_core/tag_version.rb
1231
1228
  - fastlane_core/lib/fastlane_core/test_parser.rb
1232
1229
  - fastlane_core/lib/fastlane_core/tool_collector.rb
1233
1230
  - fastlane_core/lib/fastlane_core/ui/disable_colors.rb
@@ -1314,7 +1311,6 @@ files:
1314
1311
  - pilot/lib/pilot/tester_manager.rb
1315
1312
  - pilot/lib/pilot/tester_util.rb
1316
1313
  - precheck/README.md
1317
- - precheck/lib/.DS_Store
1318
1314
  - precheck/lib/assets/PrecheckfileTemplate
1319
1315
  - precheck/lib/assets/PrecheckfileTemplate.swift
1320
1316
  - precheck/lib/precheck.rb
@@ -1530,24 +1526,24 @@ metadata:
1530
1526
  post_install_message:
1531
1527
  rdoc_options: []
1532
1528
  require_paths:
1533
- - cert/lib
1534
- - credentials_manager/lib
1535
- - deliver/lib
1536
- - fastlane/lib
1537
- - fastlane_core/lib
1538
- - frameit/lib
1539
- - gym/lib
1529
+ - supply/lib
1530
+ - screengrab/lib
1540
1531
  - match/lib
1541
- - pem/lib
1542
- - pilot/lib
1543
1532
  - precheck/lib
1533
+ - sigh/lib
1544
1534
  - produce/lib
1545
1535
  - scan/lib
1546
- - screengrab/lib
1547
- - sigh/lib
1536
+ - gym/lib
1548
1537
  - snapshot/lib
1538
+ - frameit/lib
1539
+ - fastlane/lib
1540
+ - cert/lib
1541
+ - pilot/lib
1549
1542
  - spaceship/lib
1550
- - supply/lib
1543
+ - credentials_manager/lib
1544
+ - deliver/lib
1545
+ - fastlane_core/lib
1546
+ - pem/lib
1551
1547
  required_ruby_version: !ruby/object:Gem::Requirement
1552
1548
  requirements:
1553
1549
  - - ">="
@@ -1555,12 +1551,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
1555
1551
  version: 2.0.0
1556
1552
  required_rubygems_version: !ruby/object:Gem::Requirement
1557
1553
  requirements:
1558
- - - ">="
1554
+ - - ">"
1559
1555
  - !ruby/object:Gem::Version
1560
- version: '0'
1556
+ version: 1.3.1
1561
1557
  requirements: []
1562
1558
  rubyforge_project:
1563
- rubygems_version: 2.2.5
1559
+ rubygems_version: 2.4.5.1
1564
1560
  signing_key:
1565
1561
  specification_version: 4
1566
1562
  summary: The easiest way to automate beta deployments and releases for your iOS and
Binary file
@@ -1,24 +0,0 @@
1
- require "rubygems/version"
2
-
3
- module FastlaneCore
4
- # Utility class to construct a Gem::Version from a tag.
5
- # Accepts vX.Y.Z and X.Y.Z.
6
- class TagVersion < Gem::Version
7
- class << self
8
- def correct?(tag)
9
- superclass.correct?(version_number_from_tag(tag))
10
- end
11
-
12
- # Gem::Version.new barfs on things like "v0.1.0", which is the style
13
- # generated by the rake release task. Just strip off any initial v
14
- # to generate a Gem::Version from a tag.
15
- def version_number_from_tag(tag)
16
- tag.sub(/^v/, "")
17
- end
18
- end
19
-
20
- def initialize(tag)
21
- super(self.class.version_number_from_tag(tag))
22
- end
23
- end
24
- end
Binary file