Skip to content

Commit a1d933c

Browse files
committed
Extracts update version rake task
1 parent e82e42f commit a1d933c

File tree

2 files changed

+123
-123
lines changed

2 files changed

+123
-123
lines changed

Rakefile

Lines changed: 1 addition & 123 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import 'rake_tasks/elasticsearch_tasks.rake'
1919
import 'rake_tasks/test_tasks.rake'
2020
import 'rake_tasks/docker_tasks.rake'
21+
import 'rake_tasks/update_version.rake'
2122
import 'profile/benchmarking/benchmarking_tasks.rake'
2223
require 'pathname'
2324

@@ -122,126 +123,3 @@ task :release do
122123
puts '-'*80
123124
end
124125
end
125-
126-
desc <<-DESC
127-
Update Rubygems versions in version.rb and *.gemspec files
128-
129-
Example:
130-
131-
$ rake update_version[5.0.0,5.0.1]
132-
DESC
133-
task :update_version, :old, :new do |task, args|
134-
require 'ansi'
135-
136-
puts '[!!!] Required argument [old] missing'.ansi(:red) unless args[:old]
137-
puts '[!!!] Required argument [new] missing'.ansi(:red) unless args[:new]
138-
139-
files = Dir['**/**/version.rb','**/**/*.gemspec']
140-
141-
longest_line = files.map(&:size).max
142-
143-
puts"\n", '= FILES '.ansi(:faint) + ('='*92).ansi(:faint), "\n"
144-
145-
files.each do |file|
146-
begin
147-
content = File.read(file)
148-
if content.match Regexp.new(args[:old])
149-
content.gsub! Regexp.new(args[:old]), args[:new]
150-
puts "+ [#{file}]".ansi(:green).ljust(longest_line+20) + " [#{args[:old]}] -> [#{args[:new]}]".ansi(:green,:bold)
151-
File.open(file, 'w') { |f| f.puts content }
152-
else
153-
puts "- [#{file}]".ansi(:yellow).ljust(longest_line+20) + " -".ansi(:faint,:strike)
154-
end
155-
rescue Exception => e
156-
puts "[!!!] #{e.class} : #{e.message}".ansi(:red,:bold)
157-
raise e
158-
end
159-
end
160-
161-
puts "\n\n", '= CHANGELOG '.ansi(:faint) + ('='*88).ansi(:faint), "\n"
162-
163-
log = `git --no-pager log --reverse --no-color --pretty='* %s' HEAD --not v#{args[:old]} elasticsearch*`.split("\n")
164-
165-
puts log.join("\n")
166-
167-
log_entries = {}
168-
log_entries[:client] = log.select { |l| l =~ /\[CLIENT\]/ }
169-
log_entries[:api] = log.select { |l| l =~ /\[API\]/ }
170-
log_entries[:dsl] = log.select { |l| l =~ /\[DSL\]/ }
171-
log_entries[:ext] = log.select { |l| l =~ /\[EXT\]/ }
172-
log_entries[:xpack] = log.select { |l| l =~ /\[XPACK\]/ }
173-
174-
changelog = File.read(File.open('CHANGELOG.md', 'r'))
175-
176-
changelog_update = ''
177-
178-
if log.any? { |l| l =~ /CLIENT|API|DSL/ }
179-
changelog_update << "## #{args[:new]}\n\n"
180-
end
181-
182-
unless log_entries[:client].empty?
183-
changelog_update << "### Client\n\n"
184-
changelog_update << log_entries[:client]
185-
.map { |l| l.gsub /\[CLIENT\] /, '' }
186-
.map { |l| "#{l}" }
187-
.join("\n")
188-
changelog_update << "\n\n"
189-
end
190-
191-
unless log_entries[:api].empty?
192-
changelog_update << "### API\n\n"
193-
changelog_update << log_entries[:api]
194-
.map { |l| l.gsub /\[API\] /, '' }
195-
.map { |l| "#{l}" }
196-
.join("\n")
197-
changelog_update << "\n\n"
198-
end
199-
200-
unless log_entries[:dsl].empty?
201-
changelog_update << "### DSL\n\n"
202-
changelog_update << log_entries[:dsl]
203-
.map { |l| l.gsub /\[DSL\] /, '' }
204-
.map { |l| "#{l}" }
205-
.join("\n")
206-
changelog_update << "\n\n"
207-
end
208-
209-
unless log_entries[:client].empty?
210-
changelog_update << "### EXT:#{args[:new]}\n\n"
211-
changelog_update << log_entries[:ext]
212-
.map { |l| l.gsub /\[EXT\] /, '' }
213-
.map { |l| "#{l}" }
214-
.join("\n")
215-
changelog_update << "\n\n"
216-
end
217-
218-
unless log_entries[:xpack].empty?
219-
changelog_update << "### XPACK\n\n"
220-
changelog_update << log_entries[:xpack]
221-
.map { |l| l.gsub /\[XPACK\] /, '' }
222-
.map { |l| "#{l}" }
223-
.join("\n")
224-
changelog_update << "\n\n"
225-
end
226-
227-
File.open('CHANGELOG.md', 'w+') { |f| f.write changelog_update and f.write changelog }
228-
229-
puts "\n\n", "= DIFF ".ansi(:faint) + ('='*93).ansi(:faint)
230-
231-
diff = `git --no-pager diff --patch --word-diff=color --minimal elasticsearch*`.split("\n")
232-
233-
puts diff
234-
.reject { |l| l =~ /^\e\[1mdiff \-\-git/ }
235-
.reject { |l| l =~ /^\e\[1mindex [a-z0-9]{7}/ }
236-
.reject { |l| l =~ /^\e\[1m\-\-\- i/ }
237-
.reject { |l| l =~ /^\e\[36m@@/ }
238-
.map { |l| l =~ /^\e\[1m\+\+\+ w/ ? "\n#{l} " + '-'*(104-l.size) : l }
239-
.join("\n")
240-
241-
puts "\n\n", "= COMMIT ".ansi(:faint) + ('='*91).ansi(:faint), "\n"
242-
243-
puts "git add CHANGELOG.md elasticsearch*",
244-
"git commit --verbose --message='Release #{args[:new]}' --edit",
245-
"rake release"
246-
"\n"
247-
end

rake_tasks/update_version.rake

Lines changed: 122 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,122 @@
1+
desc <<-DESC
2+
Update Rubygems versions in version.rb and *.gemspec files
3+
4+
Example:
5+
6+
$ rake update_version[5.0.0,5.0.1]
7+
DESC
8+
task :update_version, :old, :new do |_, args|
9+
require 'ansi'
10+
11+
puts '[!!!] Required argument [old] missing'.ansi(:red) unless args[:old]
12+
puts '[!!!] Required argument [new] missing'.ansi(:red) unless args[:new]
13+
14+
files = Dir['**/**/version.rb','**/**/*.gemspec']
15+
16+
longest_line = files.map(&:size).max
17+
18+
puts"\n", '= FILES '.ansi(:faint) + ('='*92).ansi(:faint), "\n"
19+
20+
files.each do |file|
21+
begin
22+
content = File.read(file)
23+
if content.match Regexp.new(args[:old])
24+
content.gsub! Regexp.new(args[:old]), args[:new]
25+
puts "+ [#{file}]".ansi(:green).ljust(longest_line+20) + " [#{args[:old]}] -> [#{args[:new]}]".ansi(:green,:bold)
26+
File.open(file, 'w') { |f| f.puts content }
27+
else
28+
puts "- [#{file}]".ansi(:yellow).ljust(longest_line+20) + " -".ansi(:faint,:strike)
29+
end
30+
rescue Exception => e
31+
puts "[!!!] #{e.class} : #{e.message}".ansi(:red,:bold)
32+
raise e
33+
end
34+
end
35+
36+
puts "\n\n", '= CHANGELOG '.ansi(:faint) + ('='*88).ansi(:faint), "\n"
37+
38+
log = `git --no-pager log --reverse --no-color --pretty='* %s' HEAD --not v#{args[:old]} elasticsearch*`.split("\n")
39+
40+
puts log.join("\n")
41+
42+
log_entries = {}
43+
log_entries[:client] = log.select { |l| l =~ /\[CLIENT\]/ }
44+
log_entries[:api] = log.select { |l| l =~ /\[API\]/ }
45+
log_entries[:dsl] = log.select { |l| l =~ /\[DSL\]/ }
46+
log_entries[:ext] = log.select { |l| l =~ /\[EXT\]/ }
47+
log_entries[:xpack] = log.select { |l| l =~ /\[XPACK\]/ }
48+
49+
changelog = File.read(File.open('CHANGELOG.md', 'r'))
50+
51+
changelog_update = ''
52+
53+
if log.any? { |l| l =~ /CLIENT|API|DSL/ }
54+
changelog_update << "## #{args[:new]}\n\n"
55+
end
56+
57+
unless log_entries[:client].empty?
58+
changelog_update << "### Client\n\n"
59+
changelog_update << log_entries[:client]
60+
.map { |l| l.gsub /\[CLIENT\] /, '' }
61+
.map { |l| "#{l}" }
62+
.join("\n")
63+
changelog_update << "\n\n"
64+
end
65+
66+
unless log_entries[:api].empty?
67+
changelog_update << "### API\n\n"
68+
changelog_update << log_entries[:api]
69+
.map { |l| l.gsub /\[API\] /, '' }
70+
.map { |l| "#{l}" }
71+
.join("\n")
72+
changelog_update << "\n\n"
73+
end
74+
75+
unless log_entries[:dsl].empty?
76+
changelog_update << "### DSL\n\n"
77+
changelog_update << log_entries[:dsl]
78+
.map { |l| l.gsub /\[DSL\] /, '' }
79+
.map { |l| "#{l}" }
80+
.join("\n")
81+
changelog_update << "\n\n"
82+
end
83+
84+
unless log_entries[:client].empty?
85+
changelog_update << "### EXT:#{args[:new]}\n\n"
86+
changelog_update << log_entries[:ext]
87+
.map { |l| l.gsub /\[EXT\] /, '' }
88+
.map { |l| "#{l}" }
89+
.join("\n")
90+
changelog_update << "\n\n"
91+
end
92+
93+
unless log_entries[:xpack].empty?
94+
changelog_update << "### XPACK\n\n"
95+
changelog_update << log_entries[:xpack]
96+
.map { |l| l.gsub /\[XPACK\] /, '' }
97+
.map { |l| "#{l}" }
98+
.join("\n")
99+
changelog_update << "\n\n"
100+
end
101+
102+
File.open('CHANGELOG.md', 'w+') { |f| f.write changelog_update and f.write changelog }
103+
104+
puts "\n\n", "= DIFF ".ansi(:faint) + ('='*93).ansi(:faint)
105+
106+
diff = `git --no-pager diff --patch --word-diff=color --minimal elasticsearch*`.split("\n")
107+
108+
puts diff
109+
.reject { |l| l =~ /^\e\[1mdiff \-\-git/ }
110+
.reject { |l| l =~ /^\e\[1mindex [a-z0-9]{7}/ }
111+
.reject { |l| l =~ /^\e\[1m\-\-\- i/ }
112+
.reject { |l| l =~ /^\e\[36m@@/ }
113+
.map { |l| l =~ /^\e\[1m\+\+\+ w/ ? "\n#{l} " + '-'*(104-l.size) : l }
114+
.join("\n")
115+
116+
puts "\n\n", '= COMMIT '.ansi(:faint) + ('='*91).ansi(:faint), "\n"
117+
118+
puts 'git add CHANGELOG.md elasticsearch*',
119+
"git commit --verbose --message='Release #{args[:new]}' --edit",
120+
'rake release',
121+
''
122+
end

0 commit comments

Comments
 (0)