From 907ac79606537189a0a7c822be1210c4d4801df3 Mon Sep 17 00:00:00 2001 From: Adam Vandenberg Date: Tue, 17 Sep 2013 06:55:13 -0700 Subject: make linkapps official --- Library/Homebrew/cmd/linkapps.rb | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100755 Library/Homebrew/cmd/linkapps.rb (limited to 'Library/Homebrew') 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 -- cgit v1.2.3