@@ -948,6 +948,7 @@ namespace :all do
948
948
Rake ::Task [ 'rb:release' ] . invoke ( args )
949
949
Rake ::Task [ 'dotnet:release' ] . invoke ( args )
950
950
Rake ::Task [ 'node:release' ] . invoke ( args )
951
+ Rake ::Task [ 'create_release_notes' ] . invoke ( args )
951
952
end
952
953
953
954
desc 'File updates for versions and metadata'
@@ -982,6 +983,39 @@ at_exit do
982
983
system 'sh' , '.git-fixfiles' if File . exist? ( '.git' ) && !SeleniumRake ::Checks . windows?
983
984
end
984
985
986
+ desc 'Create Release Notes for Minor Release'
987
+ task :create_release_notes do
988
+ range = "#{ previous_tag ( java_version ) } ...HEAD"
989
+ format = "* [\\ `%h\\ `](http://github.com/seleniumhq/selenium/commit/%H) - %s :: %an"
990
+ git_log_command = %Q(git --no-pager log "#{ range } " --pretty=format:"#{ format } "--reverse)
991
+ git_log_output = `#{ git_log_command } `
992
+
993
+ release_notes = <<~RELEASE_NOTES
994
+ ### Changelog
995
+
996
+ For each component's detailed changelog, please check:
997
+ * [Ruby](https://github.com/SeleniumHQ/selenium/blob/trunk/rb/CHANGES)
998
+ * [Python](https://github.com/SeleniumHQ/selenium/blob/trunk/py/CHANGES)
999
+ * [JavaScript](https://github.com/SeleniumHQ/selenium/blob/trunk/javascript/node/selenium-webdriver/CHANGES.md)
1000
+ * [Java](https://github.com/SeleniumHQ/selenium/blob/trunk/java/CHANGELOG)
1001
+ * [DotNet](https://github.com/SeleniumHQ/selenium/blob/trunk/dotnet/CHANGELOG)
1002
+ * [IEDriverServer](https://github.com/SeleniumHQ/selenium/blob/trunk/cpp/iedriverserver/CHANGELOG)
1003
+
1004
+ ### Commits in this release
1005
+ <details>
1006
+ <summary>Click to see all the commits included in this release</summary>
1007
+
1008
+ #{ git_log_output }
1009
+
1010
+ </details>
1011
+ RELEASE_NOTES
1012
+
1013
+ FileUtils . mkdir_p ( 'build/dist' )
1014
+ release_notes_file = "build/dist/release_notes_#{ java_version } .md"
1015
+ File . write ( release_notes_file , release_notes )
1016
+ puts "Release notes have been generated at: #{ release_notes_file } "
1017
+ end
1018
+
985
1019
def updated_version ( current , desired = nil )
986
1020
version = desired ? desired . split ( '.' ) : current . split ( /\. |-/ )
987
1021
if desired
@@ -1078,21 +1112,23 @@ def previous_version(version)
1078
1112
end
1079
1113
end
1080
1114
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
1115
+ def previous_tag ( current_version , language = nil )
1116
+ version = current_version . split ( /\. |-/ )
1117
+ if version . size > 3
1118
+ puts "WARNING - Changelogs not updated when set to prerelease"
1119
+ elsif version [ 2 ] . to_i > 1
1120
+ # specified as patch release
1121
+ patch_version = ( version [ 2 ] . to_i - 1 ) . to_s
1122
+ "selenium-#{ [ [ version [ 0 ] ] , version [ 1 ] , patch_version ] . join ( '.' ) } -#{ language } "
1123
+ elsif version [ 2 ] == "1"
1124
+ # specified as patch release; special case
1125
+ "selenium-#{ [ [ version [ 0 ] ] , version [ 1 ] , "0" ] . join ( '.' ) } "
1126
+ else
1127
+ minor_version = ( version [ 1 ] . to_i - 1 )
1128
+ tags = @git . tags . map ( &:name )
1129
+ tag = tags . select { |tag | tag . match? ( /selenium-4\. #{ minor_version } .*-#{ language } / ) } . last if language
1130
+ tag || "selenium-#{ [ [ version [ 0 ] ] , minor_version , "0" ] . join ( '.' ) } "
1131
+ end
1096
1132
end
1097
1133
1098
1134
def update_changelog ( version , language , path , changelog , header )
0 commit comments