brew/Library/Contributions/cmd/brew-linkapps.rb

34 lines
975 B
Ruby
Raw Normal View History

# Links any Applications (.app) found in installed prefixes to ~/Applications
require 'keg'
TARGET_DIR = ARGV.include?("--system") ? "/Applications" : File.expand_path("~/Applications")
unless File.exist? TARGET_DIR
opoo "#{TARGET_DIR} does not exist, stopping."
puts "Run `mkdir #{TARGET_DIR}` first."
exit 1
end
HOMEBREW_CELLAR.subdirs.each do |rack|
kegs = rack.subdirs.map { |d| Keg.new(d) }
next if kegs.empty?
keg = kegs.detect(&:linked?) || kegs.max {|a,b| a.version <=> b.version}
Dir["#{keg}/*.app", "#{keg}/bin/*.app", "#{keg}/libexec/*.app"].each do |app|
puts "Linking #{app}"
app_name = File.basename(app)
target = "#{TARGET_DIR}/#{app_name}"
if File.exist?(target) && File.symlink?(target)
system "rm", target
elsif File.exist?(target)
onoe "#{target} already exists, skipping."
next
end
system "ln", "-s", app, TARGET_DIR
end
end
puts "Finished linking. Find the links under #{TARGET_DIR}."