Menu Close

Homebrew Version Extension Attribute

Yet another Jamf Pro Extension Attribute which returns the installed version of Homebrew

Background

Homebrew is The Missing Package Manager for macOS (or Linux) and knowing the version installed on your Mac fleet can prove critical.

Earlier this week, we observed our previous Jamf Pro Extension Attribute for Homebrew returning unexpected results:

<result>usage:</result>

After a little digging, it was discovered that something had changed with brew -v from version 4.3.10

% brew --version
Homebrew 4.3.10

% brew -v
Homebrew 4.3.10

… when compared with version 4.3.11:

% brew --version
Homebrew 4.3.11

% brew -v       
Example usage:
  brew search TEXT|/REGEX/
  brew info [FORMULA|CASK...]
  brew install FORMULA|CASK...
  brew update
  brew upgrade [FORMULA|CASK...]
  brew uninstall FORMULA|CASK...
  brew list [FORMULA|CASK...]

Troubleshooting:
  brew config
  brew doctor
  brew install --verbose --debug FORMULA|CASK

Contributing:
  brew create URL [--no-fetch]
  brew edit [FORMULA|CASK...]

Further help:
  brew commands
  brew help [COMMAND]
  man brew
  https://docs.brew.sh

Gratefully, #17903 has already been merged and confirmed resolved in 4.3.13

❯ brew --version
Homebrew 4.3.13

❯ brew -v
Homebrew 4.3.13

Extension Attribute

The following leverages brew --version as the last logged-in user.

#!/bin/zsh --no-rcs 
# shellcheck shell=bash

####################################################################
# ABOUT                                                            #
#                                                                  #
# A script to collect the version of Homebrew currently installed. #
# If Homebrew is not installed, "Not Installed" will returned.     #
#                                                                  #
####################################################################
#                                                                  #
# HISTORY                                                          #
#                                                                  #
#   Version 0.0.1, 30-Jul-2024, Dan K. Snelson (@dan-snelson)      #
#   - Original version (inspired by M. Lamont)                     #
#                                                                  #
#   Version 0.0.2, 30-Jul-2024, Dan K. Snelson (@dan-snelson)      #
#   - Updated to only return the "Homebrew " line (thanks, J.D.N.) #
#                                                                  #
####################################################################

# Set default for RESULT
RESULT="Not Installed"

# Last Logged-in User
lastUser=$( defaults read /Library/Preferences/com.apple.loginwindow.plist lastUserName )

# Determine Homebrew path, based on Mac's Architecture
if [[ "$(arch)" == "arm64" ]]; then
  homebrewPath="/opt/homebrew/bin/brew"
else
  homebrewPath="/usr/local/bin/brew"
fi

# Determine Homebrew version
if [[ -e "${homebrewPath}" ]]; then 
    RESULT=$( su - "${lastUser}" -c "${homebrewPath} --version" | grep "Homebrew " | awk '{ print $2 }' )
fi

# Output RESULT
/bin/echo "<result>$RESULT</result>"

(We added grep "Homebrew " once we discovered multiple creative ways users have personalized the output of brew --version.)

Posted in Extension Attributes, Jamf Pro, Scripts

Related Posts