Skip to content

Instantly share code, notes, and snippets.

@rdmarsh
Created December 28, 2016 01:09

Revisions

  1. rdmarsh created this gist Dec 28, 2016.
    32 changes: 32 additions & 0 deletions brew-tree.sh
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,32 @@
    #!/usr/bin/env bash

    #produces a dot graph for homebrew dependencies
    #run using `./brew-tree.sh | dot -Tpdf -o brew-tree.pdf`

    set -e #exit immediately if a simple command exits with a non-zero status
    set -u #treat unset variables as an error when performing parameter expansion
    set -o pipefail #exit status of last non-zero exit code is returned

    echo "digraph brew {"
    echo " node [shape=Mrecord, fontname=monospace]"
    echo " rankdir=LR"
    echo " overlap=false"
    echo " splines=true"
    echo " layout=dot"
    echo

    for formula in $(/usr/local/bin/brew list) ; do
    echo " \"${formula}\""
    #clean names
    for deps in $(/usr/local/bin/brew deps "${formula}") ; do
    echo " \"${deps}\" [style=filled,fillcolor=\"/accent3/2\"]"
    echo " \"${formula}\" -> \"${deps}\""
    done
    done

    #color leaves
    for formula in $(/usr/local/bin/brew leaves); do
    echo " \"${formula}\" [style=filled,fillcolor=\"/accent3/1\"]"
    done

    echo "}"