From 14ef15f591795c517b7771c5eb01863b2b577a46 Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Fri, 30 Sep 2016 03:22:09 -0700 Subject: [PATCH 1/4] keg: create symlinks in opt for formula aliases --- Library/Homebrew/keg.rb | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 17ff3bcef8..bebc3c8870 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 From 4c922a089bf2bb8ff379291c90d46b91978dbbb4 Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Mon, 3 Oct 2016 02:41:17 -0700 Subject: [PATCH 2/4] remove unless empty since each is no-op for empty --- Library/Homebrew/keg.rb | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index bebc3c8870..06ac68310e 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -239,10 +239,8 @@ class Keg def remove_opt_record opt_record.unlink - unless aliases.empty? - aliases.each do |a| - (opt_record.parent/a).unlink - end + aliases.each do |a| + (opt_record.parent/a).unlink end opt_record.parent.rmdir_if_possible end @@ -478,12 +476,10 @@ class Keg 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 + 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 return unless oldname_opt_record From 63295fd81af2b3fa5dc8e933f904b6959727f62e Mon Sep 17 00:00:00 2001 From: ilovezfs Date: Mon, 3 Oct 2016 02:42:33 -0700 Subject: [PATCH 3/4] have opt alias symlink point into the Cellar in case people expect to be able to find the prefix by only resolving the symlink once (e.g., if they're using readlink not realpath) --- Library/Homebrew/keg.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index 06ac68310e..dfbf0ad98d 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -479,7 +479,7 @@ class Keg 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) + make_relative_symlink(alias_opt_record, path, mode) end return unless oldname_opt_record From dfa2c247e0dbdbf506f5175a1c839bfd09caecd9 Mon Sep 17 00:00:00 2001 From: Mike McQuaid Date: Mon, 20 Feb 2017 14:23:01 +0000 Subject: [PATCH 4/4] keg: simplify code, handle exceptions. --- Library/Homebrew/keg.rb | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/Library/Homebrew/keg.rb b/Library/Homebrew/keg.rb index dfbf0ad98d..b31997d5a9 100644 --- a/Library/Homebrew/keg.rb +++ b/Library/Homebrew/keg.rb @@ -239,9 +239,7 @@ class Keg def remove_opt_record opt_record.unlink - aliases.each do |a| - (opt_record.parent/a).unlink - end + aliases.each { |a| (opt_record.parent/a).unlink } opt_record.parent.rmdir_if_possible end @@ -465,12 +463,9 @@ class Keg 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) + Formula[rack.basename.to_s].aliases + rescue FormulaUnavailableError + [] end def optlink(mode = OpenStruct.new)