lib/homebrew_analyzer.rb in graph-2.10.0 vs lib/homebrew_analyzer.rb in graph-2.11.0

- old
+ new

@@ -10,27 +10,38 @@ def installed # don't cache so it updates every delete puts "scanning installed ports" ports = normal `brew list #{SHH}` puts "scanning installed casks" - self.casks = normal `brew cask list #{SHH}` + self.casks = normal `brew list --cask #{SHH}` ports + casks end def outdated # don't cache so it updates every delete puts "scanning outdated ports" ports = normal `brew outdated #{SHH}` puts "scanning outdated casks" - casks = normal `brew cask outdated #{SHH}` + casks = normal `brew outdated --cask #{SHH}` ports + casks end def alldeps - @alldeps ||= `brew deps --installed` - .lines - .map { |l| k, *v = l.delete(":").split; [clean(k), v] } - .to_h + # there's YET ANOTHER bug in homebrew whereby `brew deps -1 + # --installed` output is painfully different from all other output: + # + # % brew deps -1 --for-each pango + # pango: cairo fontconfig freetype fribidi glib harfbuzz + # % brew deps -1 --installed | grep pango + # pango: cairo + + @alldeps ||= begin + full_names = `brew list --full-name`.split + `brew deps -n1 --for-each #{full_names.join " "}` + .lines + .map { |l| k, *v = l.delete(":").split; [clean(k), v] } + .to_h + end end def deps port return [] if @casks.include? port alldeps[port] ||= `brew deps #{port}`.scan(/\S+/)