2010-06-09 12:09:34 -07:00
|
|
|
# Links any Applications (.app) found in installed prefixes to ~/Applications
|
|
|
|
require "formula"
|
|
|
|
|
2010-08-07 22:39:23 -07:00
|
|
|
HOME_APPS = File.expand_path("~/Applications")
|
|
|
|
|
|
|
|
unless File.exist? HOME_APPS
|
|
|
|
opoo "#{HOME_APPS} does not exist, stopping."
|
2011-06-05 12:29:36 -07:00
|
|
|
puts "Run `mkdir ~/Applications` first."
|
2010-06-09 12:09:34 -07:00
|
|
|
exit 1
|
|
|
|
end
|
|
|
|
|
2012-09-09 21:51:40 +03:00
|
|
|
FINDER_ALIAS_MAGIC_PREFIX = "book\x00\x00\x00\x00mark\x00\x00\x00\x00"
|
|
|
|
|
|
|
|
def finder_alias?(filename)
|
|
|
|
return false if not File.file? filename
|
|
|
|
File.open(filename) do |f|
|
|
|
|
return f.read(FINDER_ALIAS_MAGIC_PREFIX.length) == FINDER_ALIAS_MAGIC_PREFIX
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def create_finder_alias(from, to)
|
|
|
|
system %Q{osascript -e 'tell application "Finder" to make alias file to POSIX file "#{from}" at POSIX file "#{to}"' > /dev/null}
|
|
|
|
end
|
|
|
|
|
2010-06-09 12:09:34 -07:00
|
|
|
HOMEBREW_CELLAR.subdirs.each do |keg|
|
|
|
|
next unless keg.subdirs
|
|
|
|
name = keg.basename.to_s
|
|
|
|
|
|
|
|
if ((f = Formula.factory(name)).installed? rescue false)
|
2011-07-10 13:50:52 +04:00
|
|
|
Dir["#{f.installed_prefix}/*.app", "#{f.installed_prefix}/bin/*.app", "#{f.installed_prefix}/libexec/*.app"].each do |p|
|
2010-06-09 12:09:34 -07:00
|
|
|
puts "Linking #{p}"
|
2012-09-09 21:51:40 +03:00
|
|
|
appname = File.basename(p, ".app")
|
2010-08-07 22:39:23 -07:00
|
|
|
target = HOME_APPS+"/"+appname
|
2010-06-09 12:09:34 -07:00
|
|
|
if File.exist? target
|
2012-09-15 09:47:04 -04:00
|
|
|
if File.symlink?(target) || finder_alias?(target)
|
2010-06-09 12:09:34 -07:00
|
|
|
system "rm", target
|
|
|
|
else
|
|
|
|
onoe "#{target} already exists, skipping."
|
|
|
|
end
|
|
|
|
end
|
2012-09-09 21:51:40 +03:00
|
|
|
create_finder_alias(p, HOME_APPS)
|
2010-06-09 12:09:34 -07:00
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
2012-06-06 18:52:16 +08:00
|
|
|
|
|
|
|
puts "Finished linking. Find the links under ~/Applications."
|