fastlane 2.63.0.beta.20171026010003 → 2.63.0.beta.20171027010003
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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 27411efe0af1b5da1306fc3963686d2023eaeece
|
4
|
+
data.tar.gz: ea01bfb262f7c2e68a3b1a7af162778f281f8af2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fa818bfe9143d441509f2a1e9c216628456cdf3e3d529a737a4d42f6e8a2396310c14f90783a20fe8a6ccad93903e9c4e4d8644287bf42ccf19884f66d5e06cf
|
7
|
+
data.tar.gz: 3e7405094e04325f52d205f72fff02c80e3d2bef0bee231486571bea645e0aabcc6e5794da6af1eb3880975af4586b3eab5aa7240a0f4afe621099a8acbdbea0
|
@@ -32,6 +32,10 @@ module Fastlane
|
|
32
32
|
FastlaneCore::ConfigItem.new(key: :path,
|
33
33
|
description: "The path of the Fastfile in the repository",
|
34
34
|
default_value: 'fastlane/Fastfile',
|
35
|
+
optional: true),
|
36
|
+
FastlaneCore::ConfigItem.new(key: :version,
|
37
|
+
description: "The version to checkout on the respository. Optimistic operator can be used to select the latest version within constraints",
|
38
|
+
default_value: nil,
|
35
39
|
optional: true)
|
36
40
|
]
|
37
41
|
end
|
@@ -50,6 +54,7 @@ module Fastlane
|
|
50
54
|
url: "git@github.com:fastlane/fastlane.git", # The URL of the repository to import the Fastfile from.
|
51
55
|
branch: "HEAD", # The branch to checkout on the repository. Defaults to `HEAD`.
|
52
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 respository. Optimistic operator can be used to select the latest version within constraints.
|
53
58
|
)'
|
54
59
|
]
|
55
60
|
end
|
@@ -225,7 +225,8 @@ module Fastlane
|
|
225
225
|
# @param url [String] The git URL to clone the repository from
|
226
226
|
# @param branch [String] The branch to checkout in the repository
|
227
227
|
# @param path [String] The path to the Fastfile
|
228
|
-
|
228
|
+
# @param verion [String] Version of the required Fastlane version
|
229
|
+
def import_from_git(url: nil, branch: 'HEAD', path: 'fastlane/Fastfile', version: nil)
|
229
230
|
UI.user_error!("Please pass a path to the `import_from_git` action") if url.to_s.length == 0
|
230
231
|
|
231
232
|
Actions.execute_action('import_from_git') do
|
@@ -235,26 +236,34 @@ module Fastlane
|
|
235
236
|
|
236
237
|
# Checkout the repo
|
237
238
|
repo_name = url.split("/").last
|
239
|
+
checkout_param = branch
|
238
240
|
|
239
241
|
Dir.mktmpdir("fl_clone") do |tmp_path|
|
240
242
|
clone_folder = File.join(tmp_path, repo_name)
|
241
243
|
|
242
|
-
branch_option = ""
|
243
244
|
branch_option = "--branch #{branch}" if branch != 'HEAD'
|
244
245
|
|
245
|
-
clone_command = "GIT_TERMINAL_PROMPT=0 git clone '#{url}' '#{clone_folder}' --depth 1 -n #{branch_option}"
|
246
|
-
|
247
246
|
UI.message "Cloning remote git repo..."
|
248
|
-
Actions.sh(
|
247
|
+
Actions.sh("GIT_TERMINAL_PROMPT=0 git clone '#{url}' '#{clone_folder}' --depth 1 -n #{branch_option}")
|
248
|
+
|
249
|
+
unless version.nil?
|
250
|
+
git_tags = fetch_remote_tags(folder: clone_folder)
|
251
|
+
|
252
|
+
# Separate version from optimistic operator
|
253
|
+
version_number = version(version_string: version)
|
254
|
+
operator = operator(version_string: version)
|
255
|
+
|
256
|
+
checkout_param = checkout_param_for_operator(operator: operator, version: version_number, git_tags: git_tags)
|
257
|
+
end
|
249
258
|
|
250
|
-
Actions.sh("cd '#{clone_folder}' && git checkout #{
|
259
|
+
Actions.sh("cd '#{clone_folder}' && git checkout #{checkout_param} '#{path}'")
|
251
260
|
|
252
261
|
# We also want to check out all the local actions of this fastlane setup
|
253
262
|
containing = path.split(File::SEPARATOR)[0..-2]
|
254
263
|
containing = "." if containing.count == 0
|
255
264
|
actions_folder = File.join(containing, "actions")
|
256
265
|
begin
|
257
|
-
Actions.sh("cd '#{clone_folder}' && git checkout #{
|
266
|
+
Actions.sh("cd '#{clone_folder}' && git checkout #{checkout_param} '#{actions_folder}'")
|
258
267
|
rescue
|
259
268
|
# We don't care about a failure here, as local actions are optional
|
260
269
|
end
|
@@ -268,6 +277,89 @@ module Fastlane
|
|
268
277
|
end
|
269
278
|
end
|
270
279
|
|
280
|
+
#####################################################
|
281
|
+
# @!group Versioning helpers
|
282
|
+
#####################################################
|
283
|
+
|
284
|
+
def fetch_remote_tags(folder: nil)
|
285
|
+
UI.message "Fetching remote git tags..."
|
286
|
+
Actions.sh("cd '#{folder}' && GIT_TERMINAL_PROMPT=0 git fetch --all --tags -q")
|
287
|
+
|
288
|
+
# Fetch all possible tags
|
289
|
+
git_tags_string = Actions.sh("cd '#{folder}' && git tag -l")
|
290
|
+
git_tags = git_tags_string.split("\n")
|
291
|
+
|
292
|
+
# Delete tags that are not a real version number
|
293
|
+
git_tags.delete_if { |tag| Gem::Version.correct?(tag) != 0 }
|
294
|
+
|
295
|
+
# Sort tags based on their version number
|
296
|
+
git_tags.sort_by { |tag| Gem::Version.new(tag) }
|
297
|
+
|
298
|
+
return git_tags
|
299
|
+
end
|
300
|
+
|
301
|
+
def checkout_param_for_operator(operator: nil, version: nil, git_tags: nil)
|
302
|
+
# ~> should select the latest version withing constraints.
|
303
|
+
# -> should select a specific version without fallback.
|
304
|
+
if operator == "~>"
|
305
|
+
return checkout_param_twiddle_wakka(version: version, git_tags: git_tags)
|
306
|
+
|
307
|
+
elsif operator == "->" || operator.nil?
|
308
|
+
return checkout_param_specific_version(version: version, git_tags: git_tags)
|
309
|
+
|
310
|
+
else
|
311
|
+
UI.user_error!("The specified operator \"#{operator}\" in \"#{version}\" is unknown. Please use one of these '~> ->'")
|
312
|
+
end
|
313
|
+
end
|
314
|
+
|
315
|
+
def checkout_param_specific_version(version: nil, git_tags: nil)
|
316
|
+
# Search matching version in array
|
317
|
+
matching_git_tags = git_tags.select do |tag|
|
318
|
+
tag == version
|
319
|
+
end
|
320
|
+
|
321
|
+
UI.user_error!("The specified version \"#{version}\" doesn't exist") if matching_git_tags.count == 0
|
322
|
+
return matching_git_tags.last
|
323
|
+
end
|
324
|
+
|
325
|
+
def checkout_param_twiddle_wakka(version: nil, git_tags: nil)
|
326
|
+
# Drop last specified digit in version
|
327
|
+
last_dot_index = version.rindex('.')
|
328
|
+
version_range = version[0..last_dot_index - 1]
|
329
|
+
|
330
|
+
# Search matching version in array
|
331
|
+
matching_git_tags = git_tags.select do |tag|
|
332
|
+
tag.start_with?(version_range)
|
333
|
+
end
|
334
|
+
|
335
|
+
UI.user_error!("No version found within the \"#{version_range}.*\" range") if matching_git_tags.count == 0
|
336
|
+
|
337
|
+
return matching_git_tags.last
|
338
|
+
end
|
339
|
+
|
340
|
+
def operator(version_string: nil)
|
341
|
+
version_info = version_range_info(version_string: version_string)
|
342
|
+
|
343
|
+
# version_info will have 2 elements if an optimistic operator is specified.
|
344
|
+
if version_info.count > 1
|
345
|
+
|
346
|
+
# Optimistic operator is always the first part. e.g.: ["~>", "2.0.0"]
|
347
|
+
return version_info.first
|
348
|
+
end
|
349
|
+
|
350
|
+
return nil
|
351
|
+
end
|
352
|
+
|
353
|
+
def version(version_string: nil)
|
354
|
+
version_info = version_range_info(version_string: version_string)
|
355
|
+
return version_info.last
|
356
|
+
end
|
357
|
+
|
358
|
+
def version_range_info(version_string: nil)
|
359
|
+
# Separate version from optimistic operator
|
360
|
+
return version_string.split(" ")
|
361
|
+
end
|
362
|
+
|
271
363
|
#####################################################
|
272
364
|
# @!group Overwriting Ruby methods
|
273
365
|
#####################################################
|
@@ -1,5 +1,5 @@
|
|
1
1
|
module Fastlane
|
2
|
-
VERSION = '2.63.0.beta.
|
2
|
+
VERSION = '2.63.0.beta.20171027010003'.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
|
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.63.0.beta.
|
4
|
+
version: 2.63.0.beta.20171027010003
|
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-10-
|
18
|
+
date: 2017-10-27 00:00:00.000000000 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: slack-notifier
|