Skip to content

Commit 4a6ec57

Browse files
committed
[build] convert changelog script to ./go task
1 parent d2a2c16 commit 4a6ec57

File tree

2 files changed

+93
-68
lines changed

2 files changed

+93
-68
lines changed

Rakefile

Lines changed: 93 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -545,6 +545,12 @@ namespace :node do
545545
puts "WARNING — Cannot currently update API Docs for JavaScript bindings"
546546
end
547547

548+
desc 'Update JavaScript changelog'
549+
task :changelog do
550+
header = "## #{node_version}"
551+
update_changelog(node_version, 'javascript', 'javascript/node/selenium-webdriver/', 'javascript/node/selenium-webdriver/CHANGES.md', header)
552+
end
553+
548554
desc 'Update Node version'
549555
task :version, [:version] do |_task, arguments|
550556
old_version = node_version
@@ -553,6 +559,8 @@ namespace :node do
553559
file = 'javascript/node/selenium-webdriver/package.json'
554560
text = File.read(file).gsub(old_version, new_version)
555561
File.open(file, "w") { |f| f.puts text }
562+
563+
Rake::Task['node:changelog'].invoke
556564
end
557565
end
558566

@@ -613,6 +621,12 @@ namespace :py do
613621
end
614622
end
615623

624+
desc 'Update Python changelog'
625+
task :changelog do
626+
header = "Selenium #{python_version}"
627+
update_changelog(python_version, 'py', 'py/', 'py/CHANGES', header)
628+
end
629+
616630
desc 'Update Python version'
617631
task :version, [:version] do |_task, arguments|
618632
old_version = python_version
@@ -626,6 +640,8 @@ namespace :py do
626640
text = File.read(file).gsub(old_version, new_version)
627641
File.open(file, "w") { |f| f.puts text }
628642
end
643+
644+
Rake::Task['py:changelog'].invoke
629645
end
630646
end
631647

@@ -668,6 +684,12 @@ namespace :rb do
668684
end
669685
end
670686

687+
desc 'Update Ruby changelog'
688+
task :changelog do
689+
header = "#{ruby_version} (#{Time.now.strftime("%Y-%m-%d")})\n========================="
690+
update_changelog(ruby_version, 'rb', 'rb/', 'rb/CHANGES', header)
691+
end
692+
671693
desc 'Update Ruby version'
672694
task :version, [:version] do |_task, arguments|
673695
old_version = ruby_version
@@ -677,6 +699,8 @@ namespace :rb do
677699
file = 'rb/lib/selenium/webdriver/version.rb'
678700
text = File.read(file).gsub(old_version, new_version)
679701
File.open(file, "w") { |f| f.puts text }
702+
703+
Rake::Task['rb:changelog'].invoke unless old_version.include?('nightly')
680704
end
681705
end
682706

@@ -746,6 +770,12 @@ namespace :dotnet do
746770
end
747771
end
748772

773+
desc 'Update .NET changelog'
774+
task :changelog do
775+
header = "v#{dotnet_version}\n======"
776+
update_changelog(dotnet_version, 'dotnet', 'dotnet/', 'dotnet/CHANGELOG', header)
777+
end
778+
749779
desc 'Update .NET version'
750780
task :version, [:version] do |_task, arguments|
751781
old_version = dotnet_version
@@ -754,6 +784,8 @@ namespace :dotnet do
754784
file = 'dotnet/selenium-dotnet-version.bzl'
755785
text = File.read(file).gsub(old_version, new_version)
756786
File.open(file, "w") { |f| f.puts text }
787+
788+
Rake::Task['dotnet:changelog'].invoke
757789
end
758790
end
759791

@@ -824,6 +856,12 @@ namespace :java do
824856
Bazel.execute('run', args, '@unpinned_maven//:pin')
825857
end
826858

859+
desc 'Update Java changelog'
860+
task :changelog do
861+
header = "v#{java_version}\n======"
862+
update_changelog(java_version, 'java', 'java/', 'java/CHANGELOG', header)
863+
end
864+
827865
desc 'Update Java version'
828866
task :version, [:version] do |_task, arguments|
829867
old_version = java_version
@@ -833,6 +871,7 @@ namespace :java do
833871
file = 'java/version.bzl'
834872
text = File.read(file).gsub(old_version, new_version)
835873
File.open(file, "w") { |f| f.puts text }
874+
Rake::Task['java:changelog'].invoke unless old_version.include?('SNAPSHOT')
836875
end
837876
end
838877

@@ -853,16 +892,25 @@ namespace :rust do
853892
sh 'CARGO_BAZEL_REPIN=true bazel sync --only=crates'
854893
end
855894

895+
desc 'Update Rust changelog'
896+
task :changelog do
897+
header = "#{rust_version}\n======"
898+
version = rust_version.split('.').tap(&:shift).join('.')
899+
update_changelog(version, 'rust', 'rust/', 'rust/CHANGELOG.md', header)
900+
end
901+
856902
desc 'Update Rust version'
857903
task :version, [:version] do |_task, arguments|
858-
old_version = arguments[:version] ? arguments[:version] : rust_version.split('.').tap(&:shift).join('.')
904+
old_version = arguments[:version] ? arguments[:version] : rust_version.split('.').tap(&:shift).append('0').join('.')
859905
new_version = updated_version(old_version, arguments[:version])
860906
new_version = new_version.split('.').tap(&:pop).join('.')
861907

862908
['rust/Cargo.toml', 'rust/BUILD.bazel'].each do |file|
863909
text = File.read(file).gsub(old_version, new_version)
864910
File.open(file, "w") { |f| f.puts text }
865911
end
912+
913+
Rake::Task['rust:changelog'].invoke
866914
end
867915
end
868916

@@ -1019,3 +1067,47 @@ def restore_git(origin_reference)
10191067
@git.checkout(origin_reference)
10201068
false
10211069
end
1070+
1071+
def previous_version(version)
1072+
current = version.split(/\.|-/)
1073+
if current.size > 3
1074+
current.pop while current.size > 3
1075+
else
1076+
current[1] = (current[1].to_i - 1).to_s
1077+
current[2] = '0'
1078+
end
1079+
end
1080+
1081+
def previous_tag(current_version, language)
1082+
version = current_version.split(/\.|-/)
1083+
if version.size > 3
1084+
puts "Changelogs not updated when set to prerelease"
1085+
elsif version[2].to_i > 1
1086+
patch_version = (version[2].to_i - 1).to_s
1087+
"selenium-#{[[version[0]], version[1], patch_version].join('.')}-#{language}"
1088+
elsif version[2] == "1"
1089+
"selenium-#{[[version[0]], version[1], "0"].join('.')}"
1090+
else
1091+
minor_version = (version[1].to_i - 1)
1092+
tags = @git.tags.map(&:name)
1093+
tags.select { |tag| tag.match?(/selenium-4\.#{minor_version}.*-#{language}/) }.last ||
1094+
"selenium-#{[[version[0]], minor_version, "0"].join('.')}"
1095+
end
1096+
end
1097+
1098+
def update_changelog(version, language, path, changelog, header)
1099+
tag = previous_tag(version, language)
1100+
log = `git --no-pager log #{tag}...HEAD --pretty=format:">>> %B" --reverse #{path}`
1101+
commits = log.split(">>>").map { |entry|
1102+
lines = entry.split("\n")
1103+
lines.reject! { |line| line.match?(/^(----|Co-authored|Signed-off)/) || line.empty? }
1104+
lines.join("\n")
1105+
}.join("\n>>>")
1106+
1107+
File.open(changelog, 'r+') do |file|
1108+
new_content = "#{header}\n#{commits}\n\n#{file.read}"
1109+
file.rewind
1110+
file.write(new_content)
1111+
file.truncate(file.pos)
1112+
end
1113+
end

scripts/update-changelogs.sh

Lines changed: 0 additions & 67 deletions
This file was deleted.

0 commit comments

Comments
 (0)