| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2021-07-14 01:09:03 -04:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  | require "abstract_command" | 
					
						
							| 
									
										
										
										
											2021-07-14 01:09:03 -04:00
										 |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |   module Cmd | 
					
						
							|  |  |  |     class Developer < AbstractCommand | 
					
						
							|  |  |  |       cmd_args do | 
					
						
							|  |  |  |         description <<~EOS | 
					
						
							|  |  |  |           Control Homebrew's developer mode. When developer mode is enabled, | 
					
						
							| 
									
										
										
										
											2025-06-24 11:14:57 +01:00
										 |  |  |           `brew update` will update Homebrew to the latest commit on the `main` | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |           branch instead of the latest stable version along with some other behaviour changes. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           `brew developer` [`state`]: | 
					
						
							|  |  |  |           Display the current state of Homebrew's developer mode. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |           `brew developer` (`on`|`off`): | 
					
						
							|  |  |  |           Turn Homebrew's developer mode on or off respectively. | 
					
						
							|  |  |  |         EOS | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         named_args %w[state on off], max: 1
 | 
					
						
							|  |  |  |       end | 
					
						
							| 
									
										
										
										
											2021-07-14 11:16:50 -04:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |       sig { override.void } | 
					
						
							|  |  |  |       def run | 
					
						
							|  |  |  |         case args.named.first | 
					
						
							|  |  |  |         when nil, "state" | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |           if Homebrew::EnvConfig.developer? | 
					
						
							|  |  |  |             puts "Developer mode is enabled because #{Tty.bold}HOMEBREW_DEVELOPER#{Tty.reset} is set." | 
					
						
							| 
									
										
										
										
											2024-07-14 11:50:57 -04:00
										 |  |  |           elsif Homebrew::EnvConfig.devcmdrun? | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |             puts "Developer mode is enabled because a developer command or `brew developer on` was run." | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |           else | 
					
						
							|  |  |  |             puts "Developer mode is disabled." | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |           if Homebrew::EnvConfig.developer? || Homebrew::EnvConfig.devcmdrun? | 
					
						
							|  |  |  |             if Homebrew::EnvConfig.update_to_tag? | 
					
						
							|  |  |  |               puts "However, `brew update` will update to the latest stable tag because " \ | 
					
						
							|  |  |  |                    "#{Tty.bold}HOMEBREW_UPDATE_TO_TAG#{Tty.reset} is set." | 
					
						
							|  |  |  |             else | 
					
						
							| 
									
										
										
										
											2025-06-24 11:14:57 +01:00
										 |  |  |               puts "`brew update` will update to the latest commit on the `main` branch." | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |             end | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             puts "`brew update` will update to the latest stable tag." | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |         when "on" | 
					
						
							|  |  |  |           Homebrew::Settings.write "devcmdrun", true | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |           if Homebrew::EnvConfig.update_to_tag? | 
					
						
							|  |  |  |             puts "To fully enable developer mode, you must unset #{Tty.bold}HOMEBREW_UPDATE_TO_TAG#{Tty.reset}." | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |         when "off" | 
					
						
							|  |  |  |           Homebrew::Settings.delete "devcmdrun" | 
					
						
							| 
									
										
										
										
											2024-12-03 09:08:50 +00:00
										 |  |  |           if Homebrew::EnvConfig.developer? | 
					
						
							|  |  |  |             puts "To fully disable developer mode, you must unset #{Tty.bold}HOMEBREW_DEVELOPER#{Tty.reset}." | 
					
						
							|  |  |  |           end | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |         else | 
					
						
							|  |  |  |           raise UsageError, "unknown subcommand: #{args.named.first}" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-07-14 01:09:03 -04:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |