| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  | # typed: true # rubocop:todo Sorbet/StrictSigil | 
					
						
							|  |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   module Bundle | 
					
						
							|  |  |  |     module WhalebrewInstaller | 
					
						
							| 
									
										
										
										
											2025-03-21 04:24:55 +00:00
										 |  |  |       def self.reset! | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |         @installed_images = nil | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-14 14:48:08 +01:00
										 |  |  |       def self.preinstall!(name, verbose: false, **_options) | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |         unless Bundle.whalebrew_installed? | 
					
						
							|  |  |  |           puts "Installing whalebrew. It is not currently installed." if verbose | 
					
						
							|  |  |  |           Bundle.brew("install", "--formula", "whalebrew", verbose:) | 
					
						
							|  |  |  |           raise "Unable to install #{name} app. Whalebrew installation failed." unless Bundle.whalebrew_installed? | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if image_installed?(name) | 
					
						
							|  |  |  |           puts "Skipping install of #{name} app. It is already installed." if verbose | 
					
						
							|  |  |  |           return false | 
					
						
							|  |  |  |         end | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-07-14 14:48:08 +01:00
										 |  |  |       def self.install!(name, preinstall: true, verbose: false, force: false, **_options) | 
					
						
							| 
									
										
										
										
											2025-07-30 08:32:22 +01:00
										 |  |  |         odisabled "`brew bundle` `whalebrew` support", "using `whalebrew` directly" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |         return true unless preinstall | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         puts "Installing #{name} image. It is not currently installed." if verbose | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return false unless Bundle.system "whalebrew", "install", name, verbose: verbose | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         installed_images << name | 
					
						
							|  |  |  |         true | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 04:24:55 +00:00
										 |  |  |       def self.image_installed?(image) | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |         installed_images.include? image | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-03-21 04:24:55 +00:00
										 |  |  |       def self.installed_images | 
					
						
							| 
									
										
										
										
											2025-03-24 21:55:47 +08:00
										 |  |  |         require "bundle/whalebrew_dumper" | 
					
						
							| 
									
										
										
										
											2025-03-18 17:38:37 +00:00
										 |  |  |         @installed_images ||= Homebrew::Bundle::WhalebrewDumper.images | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |