2 votes

Existe-t-il une alternative à whiptail pour MacOS ?

Je voudrais essayer un shell script qui fait usage de queue de fouet mais je suis sur un MAC et le whiptail ne semble pas y exister. Est-ce que quelqu'un sait s'il existe une alternative (comme, par exemple exa pour ls ) ?

Voici le script que je voudrais tester (c'est une WP-CLI script qui me permettrait de sélectionner les installations locales de WordPress, en utilisant un dialogue. Je l'ai trouvé en bas de cette page ):

#!/bin/bash

WP_TOP_PATH="/home/"
MENU_TEXT="Choose an installation"
GAUGE_TEXT="Searching for WordPress"

declare -a MENU
WPS="$(wp --allow-root find "$WP_TOP_PATH" --field=version_path)"
WP_TOTAL="$(wc -l <<< "$WPS")"
WP_COUNT="0"

while read -r WP; do
    WP_LOCAL="${WP%wp-includes/version.php}"

    NAME="$(cd "$WP_LOCAL"; sudo -u "$(stat . -c %U)" -- wp --no-debug --quiet option get blogname)"
    if [ -z "$NAME" ]; then
        NAME="(unknown)"
    fi
    MENU+=( "$WP_LOCAL" "$NAME" )

    echo "$((++WP_COUNT * 100 / WP_TOTAL))".
done <<< "$WPS" > >(whiptail --gauge "$GAUGE_TEXT" 7 74 0)

WP_LOCAL="$(whiptail --title "WordPress" --menu "$MENU_TEXT"  $((${#MENU[*]} / 2 + 7)) 74 10 "${MENU[@]}" 3>&1 1>&2 2>&3)"

if [ $? -ne 0 ] || [ ! -d "$WP_LOCAL" ]; then
    echo "Cannot find '${WP_LOCAL}'" 1>&2
    exit 100
fi

echo "cd ${WP_LOCAL}"

1 votes

Bien que je ne connaisse pas grand chose à bash, cela ressemble beaucoup à une Problème XY

2voto

Oskar Points 1242

Je commencerais par brew install dialog de https://brew.sh et ensuite

alias whiptail=dialog

J'espère que vous n'aurez pas à modifier votre script autrement qu'en supprimant l'alias comme nouvelle ligne 3 dans votre script. Pour les personnes qui n'utilisent pas encore Wordpress sur d'autres Unix, les applications et les installateurs spécifiques à Apple semblent également être une excellente option en raison de ce qui suit une vaste documentation y applications natives .

Enfin, si vous trouvez que vous avez besoin de whiptail, les conteneurs sont une excellente option pour ne pas avoir à forker vos outils et à modifier les scripts.

0 votes

Cela nécessitera probablement soit un lien symbolique ( ln -s $(brew --prefix)/dialog /usr/local/bin/whiptail ) ou des changements dans le script. Les alias sont généralement ignorés dans les script.

1 votes

Je suis d'accord avec @nohillside, je n'ai pas chargé ce script pour tester les choses en profondeur - je me dis que si le PO obtient bash, ce n'est pas un problème et s'il ne l'obtient pas, les autres suggestions sont plus durables que de les amener au prochain barrage routier en utilisant bash pour gérer les installations locales de Wordpress.

1voto

rassoh Points 121

Grâce à la réponse de bmike et le commentaire de @nohillside, j'ai pu faire en sorte que cela fonctionne. Après avoir exécuté brew install dialog J'ai mis ça dans mon ~/.bashrc :

alias whiptail=dialog

Et pour faire en sorte que mon script respecte effectivement l'alias, j'ai suivi l'instruction Les instructions se trouvent ici et mettre ça dans mon script au tout début :

#!/bin/bash

shopt -s expand_aliases
source ~/.bashrc

0 votes

C'est génial de voir que ça marche. Le fait de s'appuyer sur une entrée dans .bashrc rend cependant cette fonctionnalité non portable. Pour être sûr, il serait probablement plus judicieux de définir l'alias directement dans le script (au lieu de faire appel à .bashrc). Ou même utiliser une fonction shell :-)

0 votes

Réponse géniale. J'étais coincé entre une fonction et un alias. Je pourrais même changer ma réponse pour utiliser une variable pour le binaire si vous voulez une autre option.

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