aboutsummaryrefslogtreecommitdiffstats
path: root/Library/Homebrew/formula.rb
diff options
context:
space:
mode:
authorMike McQuaid2016-11-11 08:23:57 +0000
committerGitHub2016-11-11 08:23:57 +0000
commit2ce17a11379a45e5de7e09a57681006aca5206bd (patch)
treed9a2e67f74825078ffab6f90d40347ad089e76e4 /Library/Homebrew/formula.rb
parentc2815fbb9af4fe4518246cba7df418935fd3b711 (diff)
parentf3526381c329cb2f274d74d8ff0b149916d29608 (diff)
downloadbrew-2ce17a11379a45e5de7e09a57681006aca5206bd.tar.bz2
Merge pull request #1082 from alyssais/uninstall_dependancy_error
uninstall: refuse when dependents still installed
Diffstat (limited to 'Library/Homebrew/formula.rb')
-rw-r--r--Library/Homebrew/formula.rb27
1 files changed, 27 insertions, 0 deletions
diff --git a/Library/Homebrew/formula.rb b/Library/Homebrew/formula.rb
index ab05548a8..5434d87c2 100644
--- a/Library/Homebrew/formula.rb
+++ b/Library/Homebrew/formula.rb
@@ -1337,6 +1337,13 @@ class Formula
end
end
+ # Clear caches of .racks and .installed.
+ # @private
+ def self.clear_cache
+ @racks = nil
+ @installed = nil
+ end
+
# An array of all racks currently installed.
# @private
def self.racks
@@ -1459,6 +1466,26 @@ class Formula
recursive_dependencies.reject(&:build?)
end
+ # Returns a list of formulae depended on by this formula that aren't
+ # installed
+ def missing_dependencies(hide: nil)
+ hide ||= []
+ missing_dependencies = recursive_dependencies do |dependent, dep|
+ if dep.optional? || dep.recommended?
+ tab = Tab.for_formula(dependent)
+ Dependency.prune unless tab.with?(dep)
+ elsif dep.build?
+ Dependency.prune
+ end
+ end
+
+ missing_dependencies.map!(&:to_formula)
+ missing_dependencies.select! do |d|
+ hide.include?(d.name) || d.installed_prefixes.empty?
+ end
+ missing_dependencies
+ end
+
# @private
def to_hash
hsh = {