| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  | # typed: true | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | # Helper functions for generating release notes. | 
					
						
							|  |  |  | # | 
					
						
							|  |  |  | # @api private | 
					
						
							|  |  |  | module ReleaseNotes | 
					
						
							|  |  |  |   extend T::Sig | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   module_function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   sig { | 
					
						
							| 
									
										
										
										
											2021-01-23 02:06:12 -05:00
										 |  |  |     params(start_ref: T.any(String, Version), end_ref: T.any(String, Version), markdown: T.nilable(T::Boolean)) | 
					
						
							| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  |       .returns(String) | 
					
						
							|  |  |  |   } | 
					
						
							|  |  |  |   def generate_release_notes(start_ref, end_ref, markdown: false) | 
					
						
							| 
									
										
										
										
											2021-06-21 14:25:01 +01:00
										 |  |  |     Utils.popen_read( | 
					
						
							| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  |       "git", "-C", HOMEBREW_REPOSITORY, "log", "--pretty=format:'%s >> - %b%n'", "#{start_ref}..#{end_ref}" | 
					
						
							| 
									
										
										
										
											2021-06-21 14:25:01 +01:00
										 |  |  |     ).lines.map do |s| | 
					
						
							| 
									
										
										
										
											2021-04-28 21:23:52 -07:00
										 |  |  |       matches = s.match(%r{.*Merge pull request #(?<pr>\d+) from (?<user>[^/]+)/[^>]*>> - (?<body>.*)}) | 
					
						
							| 
									
										
										
										
											2021-06-21 14:25:01 +01:00
										 |  |  |       next if matches.blank? | 
					
						
							|  |  |  |       next if matches[:user] == "Homebrew" | 
					
						
							| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-21 14:25:01 +01:00
										 |  |  |       body = matches[:body].presence | 
					
						
							|  |  |  |       body ||= s.gsub(/.*(Merge pull request .*) >> - .*/, "\\1").chomp | 
					
						
							| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-21 14:25:01 +01:00
										 |  |  |       "- [#{body}](https://github.com/Homebrew/brew/pull/#{matches[:pr]}) (@#{matches[:user]})\n" | 
					
						
							|  |  |  |     end.compact.join | 
					
						
							| 
									
										
										
										
											2021-01-21 17:43:52 -05:00
										 |  |  |   end | 
					
						
							|  |  |  | end |