| 
									
										
										
										
											2022-10-11 00:52:32 +01:00
										 |  |  | # typed: true | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require "formula" | 
					
						
							|  |  |  | require "completions" | 
					
						
							| 
									
										
										
										
											2022-11-08 20:33:30 +09:00
										 |  |  | require "manpages" | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   module_function | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   sig { returns(CLI::Parser) } | 
					
						
							|  |  |  |   def generate_man_completions_args | 
					
						
							|  |  |  |     Homebrew::CLI::Parser.new do | 
					
						
							|  |  |  |       description <<~EOS | 
					
						
							| 
									
										
										
										
											2021-05-04 18:38:55 +05:30
										 |  |  |         Generate Homebrew's manpages and shell completions. | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  |       EOS | 
					
						
							|  |  |  |       switch "--fail-if-not-changed", | 
					
						
							| 
									
										
										
										
											2022-09-02 08:24:33 +01:00
										 |  |  |              hidden:      true, | 
					
						
							| 
									
										
										
										
											2022-06-28 10:09:59 +01:00
										 |  |  |              description: "Return a failing status code if no changes are detected in the manpage outputs. " \ | 
					
						
							|  |  |  |                           "This can be used to notify CI when the manpages are out of date. Additionally, " \ | 
					
						
							|  |  |  |                           "the date used in new manpages will match those in the existing manpages (to allow " \ | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  |                           "comparison without factoring in the date)." | 
					
						
							|  |  |  |       named_args :none | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   def generate_man_completions | 
					
						
							|  |  |  |     args = generate_man_completions_args.parse | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-02-07 19:25:51 +01:00
										 |  |  |     odisabled "brew generate-man-completions --fail-if-not-changed" if args.fail_if_not_changed? | 
					
						
							| 
									
										
										
										
											2022-09-02 08:24:33 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  |     Commands.rebuild_internal_commands_completion_list | 
					
						
							| 
									
										
										
										
											2022-11-08 20:33:30 +09:00
										 |  |  |     Manpages.regenerate_man_pages(quiet: args.quiet?) | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  |     Completions.update_shell_completions! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     diff = system_command "git", args: [ | 
					
						
							|  |  |  |       "-C", HOMEBREW_REPOSITORY, "diff", "--exit-code", "docs/Manpage.md", "manpages", "completions" | 
					
						
							|  |  |  |     ] | 
					
						
							| 
									
										
										
										
											2022-09-02 08:24:33 +01:00
										 |  |  |     if diff.status.success? | 
					
						
							|  |  |  |       ofail "No changes to manpage or completions." | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       puts "Manpage and completions updated." | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2021-05-03 20:42:35 +05:30
										 |  |  |   end | 
					
						
							|  |  |  | end |