| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  | # Links any Applications (.app) found in installed prefixes to /Applications | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  | require "keg" | 
					
						
							| 
									
										
										
										
											2015-08-13 20:35:22 +08:00
										 |  |  | require "formula" | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-06-18 22:41:47 -05:00
										 |  |  | module Homebrew | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  |   def linkapps | 
					
						
							|  |  |  |     target_dir = ARGV.include?("--local") ? File.expand_path("~/Applications") : "/Applications" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     unless File.exist? target_dir | 
					
						
							|  |  |  |       opoo "#{target_dir} does not exist, stopping." | 
					
						
							|  |  |  |       puts "Run `mkdir #{target_dir}` first." | 
					
						
							|  |  |  |       exit 1
 | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-18 15:13:04 +08:00
										 |  |  |     if ARGV.named.empty? | 
					
						
							| 
									
										
										
										
											2015-08-13 20:35:22 +08:00
										 |  |  |       kegs = Formula.racks.map do |rack| | 
					
						
							| 
									
										
										
										
											2014-12-18 15:13:04 +08:00
										 |  |  |         keg = rack.subdirs.map { |d| Keg.new(d) } | 
					
						
							|  |  |  |         next if keg.empty? | 
					
						
							| 
									
										
										
										
											2015-08-03 13:09:07 +01:00
										 |  |  |         keg.detect(&:linked?) || keg.max { |a, b| a.version <=> b.version } | 
					
						
							| 
									
										
										
										
											2014-12-18 15:13:04 +08:00
										 |  |  |       end | 
					
						
							|  |  |  |     else | 
					
						
							|  |  |  |       kegs = ARGV.kegs | 
					
						
							|  |  |  |     end | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-12-18 15:13:04 +08:00
										 |  |  |     kegs.each do |keg| | 
					
						
							|  |  |  |       keg = keg.opt_record if keg.optlinked? | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  |       Dir["#{keg}/*.app", "#{keg}/bin/*.app", "#{keg}/libexec/*.app"].each do |app| | 
					
						
							| 
									
										
										
										
											2015-04-17 02:08:55 +01:00
										 |  |  |         puts "Linking #{app} to #{target_dir}." | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  |         app_name = File.basename(app) | 
					
						
							|  |  |  |         target = "#{target_dir}/#{app_name}" | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         if File.exist?(target) && !File.symlink?(target) | 
					
						
							|  |  |  |           onoe "#{target} already exists, skipping." | 
					
						
							|  |  |  |           next | 
					
						
							|  |  |  |         end | 
					
						
							| 
									
										
										
										
											2015-04-17 02:08:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-09-17 06:55:13 -07:00
										 |  |  |         system "ln", "-sf", app, target_dir | 
					
						
							|  |  |  |       end | 
					
						
							|  |  |  |     end | 
					
						
							|  |  |  |   end | 
					
						
							|  |  |  | end |