¿Cómo encontrar programáticamente el último número de versión de Homebrew?

¿Cómo encontrar programáticamente el último número de versión de Homebrew?

Puedo encontrar esto en mi computadora local con brew --version y string procesan el resultado para get un número de versión. ¿Cuál es una buena manera de getlo para el Homebrew lanzado? Me gustaría verificar mediante progtwigción que el homebrew está actualizado para muchas computadoras.

  • ¿Qué es "TALagent" y por qué es "Salir del aburrimiento"?
  • Versions.app: ¿Cómo seleccionar Kaleidoscope.app como herramienta diff?
  • No se puede abrir o actualizar iPhoto
  • ¿Cuál es la diferencia entre Dreamweaver_14_LS20.dmg y Dreamweaver_13_LS20.dmg?
  • ¿Cómo resaltar los cambios al comparar versiones de un documento en OS X?
  • Problema de incompatibilidad con FreeType
  • cómo instalar postgres 9.6 y un PostGIS correspondiente
  • ¿Cómo usar Dropbox para aplicaciones con soporte de versiones de Lion?
  • One Solution collect form web for “¿Cómo encontrar programáticamente el último número de versión de Homebrew?”

    Yo personalmente no uso Homebrew, así que si hay una forma de usar brew para get el último número de versión disponible en línea, no lo sé.

    Tenga en count que desde el 27 de junio de 2012 y la versión 0.9.1 de Homebrew, la numeración de la versión ha mantenido un patrón típico establecido de major.minor.maintenance , utilizando solo numbers separados por un período. Por lo tanto, es relativamente fácil probar que los valores devueltos por las sustituciones de command utilizadas para asignarlos a la versión instalada y las últimas variables de versión de lanzamiento siguen este patrón.

    Una vez que se testingn, las cadenas de versión se convierten a numbers para que una comparación binaria pueda determinar si la versión instalada es menor que la versión de lanzamiento más reciente, momento en el que se puede tomar la acción adecuada.

    El siguiente script bash es un ejemplo de cómo uno podría codificarlo :

     #!/bin/bash # Get installed version number and latest release version number. localHomebrewVersion="$(brew --version | awk '/Homebrew [0-9]/{print $2}')" latestHomebrewRelease="$(curl -sL https://api.github.com/repos/Homebrew/brew/releases/latest | ruby -rjson -e 'puts JSON.parse($<.read)["name"]')" # Test that both variables hold the expected pattern. if [[ $localHomebrewVersion =~ [0-9]\.[0-9]{1,2}\.[0-9]{1,2} ]] && [[ $latestHomebrewRelease =~ [0-9]\.[0-9]{1,2}\.[0-9]{1,2} ]]; then # Function used to convert string version numbers to numeric values for testing. function version { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d", $1,$2,$3,$4); }'; } # Test to see if the installed version number is less than the latest release version. if [[ $(version $localHomebrewVersion) -lt $(version $latestHomebrewRelease) ]]; then brew update else echo "Homebrew is already up-to-date." fi else # One or both of the command substitutions '$(...)' returned unexpected output for the version variables. echo "At least one of the version variables contains an unexpected value." fi 

    Nota: He incorporado el command sugerido en el comentario de Synoli para asignar a la latestHomebrewRelease variable de latestHomebrewRelease , ya que ciertamente parece ser un método más estable para get la última versión de la información de la versión.

    Actualización: se agregó una testing para ver que las variables de versión contengan el patrón esperado antes de probar si la versión instalada es menor que la versión de lanzamiento más reciente.

    Loving Apple Products like poisoning (iPhone, iPad, iMac, Macbook, iWatch).