aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorOri Peleg2012-09-09 21:51:40 +0300
committerAdam Vandenberg2012-09-09 13:00:21 -0700
commitfae4cbd9e88735bfb8a8c5bec533ec573ec2452b (patch)
tree90b8b112912c12639adeab4b3367f5eefe46ca82
parent192e6e052cd5e0ab47aa53e8b438640efedc3630 (diff)
downloadbrew-fae4cbd9e88735bfb8a8c5bec533ec573ec2452b.tar.bz2
linkapp: create Finder aliases
Symlinks to apps don't play well with Spotlight, but Finder alises do, so let's create them instead. Closes Homebrew/homebrew#14821. Signed-off-by: Adam Vandenberg <flangy@gmail.com>
-rwxr-xr-xLibrary/Contributions/cmds/brew-linkapps.rb19
1 files changed, 16 insertions, 3 deletions
diff --git a/Library/Contributions/cmds/brew-linkapps.rb b/Library/Contributions/cmds/brew-linkapps.rb
index 92e1f6890..ec0f658d4 100755
--- a/Library/Contributions/cmds/brew-linkapps.rb
+++ b/Library/Contributions/cmds/brew-linkapps.rb
@@ -9,6 +9,19 @@ unless File.exist? HOME_APPS
exit 1
end
+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
+
HOMEBREW_CELLAR.subdirs.each do |keg|
next unless keg.subdirs
name = keg.basename.to_s
@@ -16,16 +29,16 @@ HOMEBREW_CELLAR.subdirs.each do |keg|
if ((f = Formula.factory(name)).installed? rescue false)
Dir["#{f.installed_prefix}/*.app", "#{f.installed_prefix}/bin/*.app", "#{f.installed_prefix}/libexec/*.app"].each do |p|
puts "Linking #{p}"
- appname = File.basename(p)
+ appname = File.basename(p, ".app")
target = HOME_APPS+"/"+appname
if File.exist? target
- if File.symlink? target
+ if File.symlink? target or finder_alias? target
system "rm", target
else
onoe "#{target} already exists, skipping."
end
end
- system "ln", "-s", p, HOME_APPS
+ create_finder_alias(p, HOME_APPS)
end
end
end