aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorilovezfs2016-09-30 03:22:09 -0700
committerMike McQuaid2017-02-20 14:14:03 +0000
commit14ef15f591795c517b7771c5eb01863b2b577a46 (patch)
tree418e61a27e97b3f9712ba45cb8f92d1eea7260bf
parentafb66d0c69bb7cf691125d082d9e45724d479723 (diff)
downloadbrew-14ef15f591795c517b7771c5eb01863b2b577a46.tar.bz2
keg: create symlinks in opt for formula aliases
-rw-r--r--Library/Homebrew/keg.rb21
1 files changed, 21 insertions, 0 deletions
diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb
index 17ff3bcef..bebc3c887 100644
--- a/Library/Homebrew/keg.rb
+++ b/Library/Homebrew/keg.rb
@@ -239,6 +239,11 @@ class Keg
def remove_opt_record
opt_record.unlink
+ unless aliases.empty?
+ aliases.each do |a|
+ (opt_record.parent/a).unlink
+ end
+ end
opt_record.parent.rmdir_if_possible
end
@@ -461,9 +466,25 @@ class Keg
@oldname_opt_record = nil
end
+ def aliases
+ formula_name = rack.basename.to_s
+ aliases_path = Formula[formula_name].tap.path/"Aliases"
+ result = aliases_path.children.select do |c|
+ c.symlink? && c.readlink.basename(".rb").to_s == formula_name
+ end
+ result.map(&:basename).map(&:to_s)
+ end
+
def optlink(mode = OpenStruct.new)
opt_record.delete if opt_record.symlink? || opt_record.exist?
make_relative_symlink(opt_record, path, mode)
+ unless aliases.empty?
+ aliases.each do |a|
+ alias_opt_record = opt_record.parent/a
+ alias_opt_record.delete if alias_opt_record.symlink? || alias_opt_record.exist?
+ make_relative_symlink(alias_opt_record, opt_record, mode)
+ end
+ end
return unless oldname_opt_record
oldname_opt_record.delete