| 
									
										
										
										
											2024-08-10 15:48:04 +01:00
										 |  |  | # typed: strict | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  | # frozen_string_literal: true | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module Homebrew | 
					
						
							|  |  |  |   # Provides helper methods for unlinking formulae and kegs with consistent output. | 
					
						
							|  |  |  |   module Unlink | 
					
						
							| 
									
										
										
										
											2024-08-10 15:48:04 +01:00
										 |  |  |     sig { params(formula: Formula, verbose: T::Boolean).void } | 
					
						
							| 
									
										
										
										
											2023-03-07 17:24:20 -08:00
										 |  |  |     def self.unlink_versioned_formulae(formula, verbose: false) | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  |       formula.versioned_formulae | 
					
						
							| 
									
										
										
										
											2020-11-16 13:21:23 +00:00
										 |  |  |              .select(&:keg_only?) | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  |              .select(&:linked?) | 
					
						
							| 
									
										
										
										
											2024-02-22 23:29:55 +00:00
										 |  |  |              .filter_map(&:any_installed_keg) | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  |              .select(&:directory?) | 
					
						
							|  |  |  |              .each do |keg| | 
					
						
							| 
									
										
										
										
											2024-03-07 16:20:20 +00:00
										 |  |  |         unlink(keg, verbose:) | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-08-10 15:48:04 +01:00
										 |  |  |     sig { params(keg: Keg, dry_run: T::Boolean, verbose: T::Boolean).void } | 
					
						
							| 
									
										
										
										
											2023-03-07 17:24:20 -08:00
										 |  |  |     def self.unlink(keg, dry_run: false, verbose: false) | 
					
						
							| 
									
										
										
										
											2024-03-07 16:20:20 +00:00
										 |  |  |       options = { dry_run:, verbose: } | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |       keg.lock do | 
					
						
							|  |  |  |         print "Unlinking #{keg}... " | 
					
						
							|  |  |  |         puts if verbose | 
					
						
							| 
									
										
										
										
											2021-01-26 15:21:24 -05:00
										 |  |  |         puts "#{keg.unlink(**options)} symlinks removed." | 
					
						
							| 
									
										
										
										
											2020-11-02 11:20:09 +00:00
										 |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |