| 
									
										
										
										
											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, | 
					
						
							|  |  |  |           `brew update` will update Homebrew to the latest commit on the `master` | 
					
						
							|  |  |  |           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 | 
					
						
							|  |  |  |         env_vars = [] | 
					
						
							|  |  |  |         env_vars << "HOMEBREW_DEVELOPER" if Homebrew::EnvConfig.developer? | 
					
						
							|  |  |  |         env_vars << "HOMEBREW_UPDATE_TO_TAG" if Homebrew::EnvConfig.update_to_tag? | 
					
						
							|  |  |  |         env_vars.map! do |var| | 
					
						
							|  |  |  |           "#{Tty.bold}#{var}#{Tty.reset}" | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         case args.named.first | 
					
						
							|  |  |  |         when nil, "state" | 
					
						
							|  |  |  |           if env_vars.any? | 
					
						
							|  |  |  |             verb = (env_vars.count == 1) ? "is" : "are" | 
					
						
							|  |  |  |             puts "Developer mode is enabled because #{env_vars.to_sentence} #{verb} set." | 
					
						
							| 
									
										
										
										
											2024-07-14 11:50:57 -04:00
										 |  |  |           elsif Homebrew::EnvConfig.devcmdrun? | 
					
						
							| 
									
										
										
										
											2024-03-29 18:17:43 -07:00
										 |  |  |             puts "Developer mode is enabled." | 
					
						
							|  |  |  |           else | 
					
						
							|  |  |  |             puts "Developer mode is disabled." | 
					
						
							|  |  |  |           end | 
					
						
							|  |  |  |         when "on" | 
					
						
							|  |  |  |           Homebrew::Settings.write "devcmdrun", true | 
					
						
							|  |  |  |         when "off" | 
					
						
							|  |  |  |           Homebrew::Settings.delete "devcmdrun" | 
					
						
							|  |  |  |           puts "To fully disable developer mode, you must unset #{env_vars.to_sentence}." if env_vars.any? | 
					
						
							|  |  |  |         else | 
					
						
							|  |  |  |           raise UsageError, "unknown subcommand: #{args.named.first}" | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2021-07-14 01:09:03 -04:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |