| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  | # typed: true | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | require_relative "../../global" | 
					
						
							|  |  |  | require_relative "../../env_config" | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-12 17:32:21 +00:00
										 |  |  | File.open("#{__dir__}/../../env_config.rbi", "w") do |file| | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  |   file.write(<<~RUBY) | 
					
						
							|  |  |  |     # typed: strict | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     module Homebrew::EnvConfig | 
					
						
							|  |  |  |   RUBY | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   dynamic_methods = {} | 
					
						
							|  |  |  |   Homebrew::EnvConfig::ENVS.each do |env, hash| | 
					
						
							| 
									
										
										
										
											2023-03-15 14:28:47 +01:00
										 |  |  |     next if Homebrew::EnvConfig::CUSTOM_IMPLEMENTATIONS.include?(env) | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |     name = Homebrew::EnvConfig.env_method_name(env, hash) | 
					
						
							|  |  |  |     dynamic_methods[name] = { default: hash[:default] } | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-12 17:32:21 +00:00
										 |  |  |   methods = Homebrew::EnvConfig.methods(false).map(&:to_s).select { |method| dynamic_methods.key?(method) }.sort | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   methods.each do |method| | 
					
						
							|  |  |  |     return_type = if method.end_with?("?") | 
					
						
							|  |  |  |       T::Boolean | 
					
						
							| 
									
										
										
										
											2023-03-13 00:11:12 +00:00
										 |  |  |     elsif (default = dynamic_methods[method][:default]) | 
					
						
							| 
									
										
										
										
											2023-03-12 17:32:21 +00:00
										 |  |  |       default.class | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  |     else | 
					
						
							| 
									
										
										
										
											2023-03-12 17:32:21 +00:00
										 |  |  |       T.nilable(String) | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     file.write(<<-RUBY)
 | 
					
						
							|  |  |  |   sig { returns(#{return_type}) } | 
					
						
							|  |  |  |   def self.#{method}; end | 
					
						
							|  |  |  |     RUBY | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-18 15:06:50 -07:00
										 |  |  |     file.write("\n") if method != methods.last | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  |   end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-03-12 17:32:21 +00:00
										 |  |  |   file.puts "end" | 
					
						
							| 
									
										
										
										
											2023-03-06 23:52:55 +00:00
										 |  |  | end |