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>
This commit is contained in:
parent
192e6e052c
commit
fae4cbd9e8
@ -9,6 +9,19 @@ unless File.exist? HOME_APPS
|
|||||||
exit 1
|
exit 1
|
||||||
end
|
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|
|
HOMEBREW_CELLAR.subdirs.each do |keg|
|
||||||
next unless keg.subdirs
|
next unless keg.subdirs
|
||||||
name = keg.basename.to_s
|
name = keg.basename.to_s
|
||||||
@ -16,16 +29,16 @@ HOMEBREW_CELLAR.subdirs.each do |keg|
|
|||||||
if ((f = Formula.factory(name)).installed? rescue false)
|
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|
|
Dir["#{f.installed_prefix}/*.app", "#{f.installed_prefix}/bin/*.app", "#{f.installed_prefix}/libexec/*.app"].each do |p|
|
||||||
puts "Linking #{p}"
|
puts "Linking #{p}"
|
||||||
appname = File.basename(p)
|
appname = File.basename(p, ".app")
|
||||||
target = HOME_APPS+"/"+appname
|
target = HOME_APPS+"/"+appname
|
||||||
if File.exist? target
|
if File.exist? target
|
||||||
if File.symlink? target
|
if File.symlink? target or finder_alias? target
|
||||||
system "rm", target
|
system "rm", target
|
||||||
else
|
else
|
||||||
onoe "#{target} already exists, skipping."
|
onoe "#{target} already exists, skipping."
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
system "ln", "-s", p, HOME_APPS
|
create_finder_alias(p, HOME_APPS)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user