aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/cmd
diff options
context:
space:
mode:
authorAdam Vandenberg2013-09-17 06:55:13 -0700
committerAdam Vandenberg2013-09-17 06:55:13 -0700
commitba9353cd8466e97c44b43057e293ccee3b6379fd (patch)
tree1fae004f15dc461c97546a27843a476217660a26 /Library/Homebrew/cmd
parent53d75d14fb06130488f01dae8f2c7b9587414683 (diff)
downloadhomebrew-ba9353cd8466e97c44b43057e293ccee3b6379fd.tar.bz2
make linkapps official
Diffstat (limited to 'Library/Homebrew/cmd')
-rwxr-xr-xLibrary/Homebrew/cmd/linkapps.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/Library/Homebrew/cmd/linkapps.rb b/Library/Homebrew/cmd/linkapps.rb
new file mode 100755
index 000000000..5cf254625
--- /dev/null
+++ b/Library/Homebrew/cmd/linkapps.rb
@@ -0,0 +1,36 @@
+# Links any Applications (.app) found in installed prefixes to /Applications
+require 'keg'
+
+module Homebrew extend self
+
+ 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
+
+ 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)
+ onoe "#{target} already exists, skipping."
+ next
+ end
+ system "ln", "-sf", app, target_dir
+ end
+ end
+
+ puts "Finished linking. Find the links under #{target_dir}."
+ end
+end