diff options
| author | Mike McQuaid | 2016-11-11 08:23:57 +0000 |
|---|---|---|
| committer | GitHub | 2016-11-11 08:23:57 +0000 |
| commit | 2ce17a11379a45e5de7e09a57681006aca5206bd (patch) | |
| tree | d9a2e67f74825078ffab6f90d40347ad089e76e4 /Library/Homebrew/formula.rb | |
| parent | c2815fbb9af4fe4518246cba7df418935fd3b711 (diff) | |
| parent | f3526381c329cb2f274d74d8ff0b149916d29608 (diff) | |
| download | brew-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.rb | 27 |
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 = { |
