2 votes

Comment trouver par programmation le dernier numéro de version de Homebrew ?

Comment trouver par programme le dernier numéro de version de Homebrew ?

Je peux le trouver sur mon ordinateur local avec brew --version et traiter le résultat en chaîne pour obtenir un numéro de version. Quel est le bon moyen de l'obtenir pour le Homebrew publié ? J'aimerais vérifier de manière programmatique que le homebrew est à jour pour de nombreux ordinateurs.

0 votes

Il semble qu'il s'agisse de trois questions ? a) Comment obtenir la version homebrew à partir du site web où elle est publiée. b) Comment comparer la version sur un ordinateur avec la version c) Comment gérer plusieurs ordinateurs (que ce soit via MDM, Apple Remote Desktop, scripting et ssh, etc...) Pourriez-vous s'il vous plaît éditer ceci pour préciser quelle est la chose que vous devez apprendre dans ce fil ? L'idéal serait de poser les trois questions séparément afin que nous puissions établir un lien avec des questions existantes ou fournir une bonne réponse à une partie sans avoir à envisager les trois obstacles auxquels vous pourriez être confronté.

2 votes

Je ne pense pas avoir vraiment posé de questions sur les points b et c. C'est juste pour donner un peu de contexte à la question que je pose, afin que les lecteurs potentiels ne se demandent pas pourquoi j'essaie de faire ça.

1 votes

@bmike Je pense que ce qui est demandé ici est suffisamment clair. La verbosité sert simplement à fournir un peu plus de contexte. Voici comment j'interprète la question, du point de vue de la construction : "Comment faire X ? Je sais déjà comment faire Y. Mais quelle est la bonne façon de faire X ? (J'ai besoin de X et Y pour accomplir l'objectif A.)" - La seule chose qui est réellement demandée est X : comment obtenir le numéro de version de la dernière version de Homebrew.

2voto

user3439894 Points 52496

Personnellement, je n'utilise pas Homebrew, donc s'il y a un moyen d'utiliser la fonction brew lui-même pour obtenir le dernier numéro de version disponible en ligne, je ne le connais pas.

Notez que depuis le 27 juin 2012 et la version 0.9.1 d'Homebrew, la numérotation des versions a conservé un schéma type de major.minor.maintenance en utilisant uniquement des chiffres séparés par un point. Il est donc relativement facile de tester que les valeurs renvoyées par les substitutions de commandes utilisées pour les affecter à la fois à la version installée et à la dernière version publiée variables suivent ce modèle.

Une fois testées, les chaînes de version sont converties en nombres afin qu'une comparaison binaire puisse déterminer si la version installée est inférieure à la dernière version publiée, auquel cas on peut prendre les mesures appropriées.

Les éléments suivants bash script est un exemple de la façon dont on pourrait code il :

#!/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

Note : J'ai incorporé le commande suggéré dans le commentaire de Synoli d'assigner à la latestHomebrewRelease variable Il s'agit en effet d'une méthode plus stable pour obtenir les dernières informations sur les versions.

Mise à jour : Ajout d'un test pour vérifier que les variables de version contiennent le modèle attendu avant de tester si la version installée est inférieure à la dernière version de la version.

1 votes

GitHub dispose d'une API pour cela, une méthode plus stable serait donc la suivante : curl -sL https://api.github.com/repos/Homebrew/brew/releases/latest | ruby -rjson -e 'puts JSON.parse($<.read)["name"]'

1 votes

@Synoli, merci pour le commande suggestion dans votre commentaire. Je l'ai intégrée dans ma réponse.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X