diff --git a/bitbar/brew-cask-upgrades.1h.sh b/bitbar/brew-cask-upgrades.1h.sh
new file mode 100755
index 0000000..0761b2d
--- /dev/null
+++ b/bitbar/brew-cask-upgrades.1h.sh
@@ -0,0 +1,53 @@
+#!/bin/bash
+# Homebrew Cask Upgrades
+# 1.0.0
+# Jim Myhrberg
+# jimeh
+# Show outdated Homebrew Cask formula
+# https://i.imgur.com/VUMVwZM.png
+# bash
+
+shopt -s extglob
+
+main() {
+ local count
+ local formulas
+ local current_version
+ local new_version
+
+ formulas=()
+ current_version=()
+ new_version=()
+
+ /usr/local/bin/brew update &> /dev/null
+
+ while read -r line; do
+ if [[ "$line" =~ ^(.+)\ \((.+)\)\ !=\ (.*)$ ]]; then
+ formulas+=("${BASH_REMATCH[1]}")
+ current_version+=("${BASH_REMATCH[2]}")
+ new_version+=("${BASH_REMATCH[3]}")
+ fi
+ done < <(/usr/local/bin/brew cask outdated -v)
+
+ count="${#formulas[@]}"
+
+ echo ":tropical_drink:↑${count} | dropdown=false"
+ echo '---'
+ echo "$count outdated casks"
+
+ if [ "$count" -gt 0 ]; then
+ echo 'Upgrade all casks | terminal=true refresh=true' \
+ 'bash=/usr/local/bin/brew param1=cask param2=upgrade'
+ echo '---'
+
+ echo 'Upgrade:'
+ for i in "${!formulas[@]}"; do
+ echo "${formulas[$i]}"
+ echo "--${current_version[$i]} → ${new_version[$i]} |" \
+ "terminal=true refresh=true bash=/usr/local/bin/brew param1=cask" \
+ "param2=upgrade param3=${formulas[$i]}"
+ done
+ fi
+}
+
+main "$@"
diff --git a/bitbar/brew-updates.1h.sh b/bitbar/brew-updates.1h.sh
deleted file mode 100755
index 9c70532..0000000
--- a/bitbar/brew-updates.1h.sh
+++ /dev/null
@@ -1,26 +0,0 @@
-#!/bin/bash
-# Homebrew Updates
-# killercup
-# killercup
-# List available updates from Homebrew (OS X)
-
-exit_with_error() {
- echo "err | color=red";
- exit 1;
-}
-
-/usr/local/bin/brew update > /dev/null #|| exit_with_error;
-
-PINNED=$(/usr/local/bin/brew list --pinned);
-OUTDATED=$(/usr/local/bin/brew outdated --quiet);
-
-UPDATES=$(comm -13 <(for X in "${PINNED[@]}"; do echo "${X}"; done) <(for X in "${OUTDATED[@]}"; do echo "${X}"; done))
-
-UPDATE_COUNT=$(echo "$UPDATES" | grep -c '[^[:space:]]');
-
-echo "↑$UPDATE_COUNT | dropdown=false"
-echo "---";
-if [ -n "$UPDATES" ]; then
- echo "Upgrade all | bash=/usr/local/bin/brew param1=upgrade terminal=false refresh=true"
- echo "$UPDATES" | awk '{print $0 " | terminal=false refresh=true bash=/usr/local/bin/brew param1=upgrade param2=" $1}'
-fi
diff --git a/bitbar/brew-upgrades.1h.sh b/bitbar/brew-upgrades.1h.sh
new file mode 100755
index 0000000..b2addab
--- /dev/null
+++ b/bitbar/brew-upgrades.1h.sh
@@ -0,0 +1,102 @@
+#!/bin/bash
+# Homebrew Upgrades
+# 1.0.0
+# Jim Myhrberg
+# jimeh
+# Show outdated Homebrew formula
+# https://i.imgur.com/bZn3RYs.png
+# bash,comm,grep,printf
+
+shopt -s extglob
+
+main() {
+ local count
+ local pinned
+ local pinned_list
+ local formulas
+ local formulas_list
+ local current_version
+ local new_version
+ local pinned_version
+ local pkg
+
+ pinned=()
+ formulas=()
+ current_version=()
+ new_version=()
+ pinned_version=()
+
+ /usr/local/bin/brew update &> /dev/null
+
+ while read -r line; do
+ pinned+=("$line")
+ done < <(/usr/local/bin/brew list --pinned)
+
+ while read -r line; do
+ if [[ "$line" =~ ^(.+)\ \((.+)\)\ \<\ (.*)\ \[pinned\ at\ (.*)]$ ]]; then
+ formulas+=("${BASH_REMATCH[1]}")
+ current_version+=("${BASH_REMATCH[2]}")
+ new_version+=("${BASH_REMATCH[3]}")
+ pinned_version+=("${BASH_REMATCH[4]}")
+ elif [[ "$line" =~ ^(.+)\ \((.+)\)\ \<\ (.*)$ ]]; then
+ formulas+=("${BASH_REMATCH[1]}")
+ current_version+=("${BASH_REMATCH[2]}")
+ new_version+=("${BASH_REMATCH[3]}")
+ pinned_version+=("NONE")
+ fi
+ done < <(/usr/local/bin/brew outdated -v)
+
+ pinned_list="$(printf '%s\n' "${pinned[@]}" | sort)"
+ formulas_list="$(printf '%s\n' "${formulas[@]}" | sort)"
+
+ count="$(
+ comm -13 <(echo "$pinned_list") <(echo "$formulas_list") \
+ | grep -c '[^[:space:]]'
+ )"
+
+ echo ":beer:↑${count} | dropdown=false"
+ echo '---'
+ if [ "${#pinned[@]}" -gt 0 ]; then
+ echo "$count outdated formula (${#pinned[@]} pinned)"
+ else
+ echo "$count outdated formula"
+ fi
+
+ if [ "$count" -gt 0 ]; then
+ echo 'Upgrade all formula | terminal=true refresh=true' \
+ 'bash=/usr/local/bin/brew param1=upgrade'
+ echo '---'
+
+ echo 'Upgrade:'
+ for i in "${!formulas[@]}"; do
+ pkg="${formulas[$i]}"
+
+ if echo "$pinned_list" | grep "${pkg}" > /dev/null; then
+ continue
+ fi
+
+ echo "$pkg"
+ echo "--${current_version[$i]} → ${new_version[$i]} |" \
+ "terminal=true refresh=true bash=/usr/local/bin/brew" \
+ "param1=upgrade param2=${pkg}"
+ done
+
+ if [ "${#pinned[@]}" -gt 0 ]; then
+
+ echo '---'
+ echo 'Pinned:'
+ for i in "${!formulas[@]}"; do
+ pkg="${formulas[$i]}"
+
+ if ! echo "$pinned_list" | grep "${pkg}" > /dev/null; then
+ continue
+ fi
+
+ echo "$pkg"
+ echo "--${pinned_version[$i]} → ${new_version[$i]}"
+ done
+ fi
+ fi
+}
+
+main "$@"