From 58489096ef6f22423f38fb0dc99512aa96f37eab Mon Sep 17 00:00:00 2001 From: Jim Myhrberg Date: Sat, 14 Mar 2020 23:26:37 +0000 Subject: [PATCH] Update Homebrew-related bitbar scripts --- bitbar/brew-cask-upgrades.1h.sh | 53 +++++++++++++++++ bitbar/brew-updates.1h.sh | 26 -------- bitbar/brew-upgrades.1h.sh | 102 ++++++++++++++++++++++++++++++++ 3 files changed, 155 insertions(+), 26 deletions(-) create mode 100755 bitbar/brew-cask-upgrades.1h.sh delete mode 100755 bitbar/brew-updates.1h.sh create mode 100755 bitbar/brew-upgrades.1h.sh 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 "$@"