10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
|
# File 'lib/fastlane/actions/increment_version_number.rb', line 10
def self.run(params)
begin
first_param = (params.first rescue nil)
folder = '.'
case first_param
when NilClass
release_task = 'patch' when String
release_task = first_param
when Hash
release_task = first_param[:release_task] ? first_param[:release_task] : "patch"
folder = first_param[:xcodeproj] ? File.join('.', first_param[:xcodeproj], '..') : '.'
end
case release_task
when /\d.\d.\d/
specific_version_number = release_task
release_task = 'specific_version'
when "patch"
release_task = 'patch'
when "minor"
release_task = 'minor'
when "major"
release_task = "major"
else
raise 'Invalid parameter #{release_task}'
end
command_prefix = [
'cd',
File.expand_path(folder).shellescape,
'&&'
].join(' ')
if Helper.test?
version_array = [1,0,0]
else
current_version= `#{command_prefix} agvtool what-marketing-version -terse1`.split("\n").last
raise 'Your current version does not respect the format A.B.C' unless current_version.match(/\d.\d.\d/)
allBundles = `#{command_prefix} agvtool what-marketing-version -terse`.split("\n")
allBundles.each do |bundle|
raise 'Ensure all you CFBundleShortVersionString are equals in your project ' unless bundle.end_with? "=#{current_version}"
end
version_array = current_version.split(".").map(&:to_i)
end
case release_task
when "patch"
version_array[2] = version_array[2]+1
next_version_number = version_array.join(".")
when "minor"
version_array[1] = version_array[1]+1
version_array[2] = version_array[2]=0
next_version_number = version_array.join(".")
when "major"
version_array[0] = version_array[0]+1
version_array[1] = version_array[1]=0
version_array[1] = version_array[2]=0
next_version_number = version_array.join(".")
when "specific_version"
next_version_number = specific_version_number
end
command = [
command_prefix,
"agvtool new-marketing-version #{next_version_number}"
].join(' ')
if Helper.test?
Actions.lane_context[SharedValues::VERSION_NUMBER] = command
else
Actions.sh command
Actions.lane_context[SharedValues::VERSION_NUMBER] = next_version_number
end
rescue => ex
Helper.log.error 'Make sure to to follow the steps to setup your Xcode project: https://developer.apple.com/library/ios/qa/qa1827/_index.html'.yellow
raise ex
end
end
|