diff options
| author | Adam Vandenberg | 2013-09-17 06:55:13 -0700 |
|---|---|---|
| committer | Adam Vandenberg | 2013-09-17 06:55:13 -0700 |
| commit | ba9353cd8466e97c44b43057e293ccee3b6379fd (patch) | |
| tree | 1fae004f15dc461c97546a27843a476217660a26 /Library/Homebrew/cmd | |
| parent | 53d75d14fb06130488f01dae8f2c7b9587414683 (diff) | |
| download | homebrew-ba9353cd8466e97c44b43057e293ccee3b6379fd.tar.bz2 | |
make linkapps official
Diffstat (limited to 'Library/Homebrew/cmd')
| -rwxr-xr-x | Library/Homebrew/cmd/linkapps.rb | 36 |
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 |
