diff --git a/scripts/getFlashPlayer b/scripts/getFlashPlayer index a73643d..397788d 100755 --- a/scripts/getFlashPlayer +++ b/scripts/getFlashPlayer @@ -1,6 +1,6 @@ #!/bin/bash -version=4.6.0 +version=4.7.0 date="26/01/2018" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" @@ -96,43 +96,50 @@ f__log(){ # 4/12/2017 fi } - # test dépendances/paquets, $1 liste commande[>paquet] (ex: killall>psmisc) - # si manque, return 1 & info commandes manquantes, si debian proposition paquet à installer - # si $2=debOnly et si paquets manquants: return 1 et $debOnlyAbsent ( $1=liste paquets ) - # si $2=debOnly et si paquets présent: return 0 et $debOnlyPresent ( $1=liste paquets ) - # attention priorité $debOnlyAbsent sur $debOnlyPresent -f__requis(){ # 4/12/2017 - local dependsMissing packagesMissing command package ireq compteur pluriel + # recherche commandes/paquets, $1 liste: cmd1|cmd2[>paquet] (séparées par espaces) ex: "gawk|mawk>gawk wget" + # si manque, return 1 & affiche commandes manquantes (si debian, ajout proposition paquet à installer) +f__requis(){ # 26/01/2018 + local ENV_DEBIAN ireq table package commands command commandsMissing packagesMissing - unset debOnlyAbsent debOnlyPresent - for ireq in $1; do - command="$(cut -d '>' -f 1 <<< $ireq)" - package="$(cut -d '>' -f 2 <<< $ireq)" - if [ "$2" == "debOnly" ]; then - if type -p "dpkg" &>/dev/null ; then # package only et debian - LC_ALL=C dpkg --get-selections | grep -qE "^$package[[:space:]]+install" \ - && debOnlyPresent+="$package " || debOnlyAbsent+="$package " + type -p "dpkg" &>/dev/null && ENV_DEBIAN="oui" # debian + type -t f__info &>/dev/null && c_echo="f__info" || c_echo="echo -e" # f__info existe? sinon echo + + for ireq in $1; do # pour tous les composants de la liste $1 + table=( ${ireq//>/ } ) # séparation sur >, split avec double bashisme, mais évite manip $IFS + + commands=( ${table[0]//|/ } ) # séparation sur | + if [ ${table[1]} ]; then + package=${table[1]} + else + package="$commands" # pas de oackages dans les options, donc idem commands[0] + fi + + for command in ${commands[@]}; do # pour toutes les commandes + if type -p "$command" &>/dev/null ; then + unset commandsMissing packagesMissing + break + else # inexistant + commandsMissing+="$command " + packagesMissing+="$package " fi - elif ! type -p "$command" &>/dev/null ; then - dependsMissing+="$command " - packagesMissing+="$package " - fi + done done - [ "$debOnlyAbsent" ] && debOnlyAbsent="$(xargs <<< $debOnlyAbsent)" # trim début & fin - [ "$debOnlyPresent" ] && debOnlyPresent="$(xargs <<< $debOnlyPresent)" # trim début & fin - [ "$debOnlyAbsent" ] && return 1 - [ "$debOnlyPresent" ] && return 0 - if [ "$dependsMissing" ]; then - compteur="$(wc -w <<< $dependsMissing)" - [ "$compteur" -gt "1" ] && pluriel="s" || unset pluriel - if [ -e /etc/debian_version ]; then - f__info "$RED""erreur critique: $compteur paquet"$pluriel" manquant"$pluriel": $STD$BOLD$dependsMissing" \ - "\n vous devriez exécuter:$GREEN apt install $packagesMissing" - else - f__info "$RED""erreur critique: $compteur commande"$pluriel" manquante"$pluriel": $STD$BOLD$dependsMissing" - fi - return 1 + + # dédoublonnage & triage + commandsMissing=$( echo $commandsMissing | tr ' ' '\n' | sort --unique | tr '\n' ' ' ) + packagesMissing=$( echo $packagesMissing | tr ' ' '\n' | sort --unique | tr '\n' ' ' ) + # suppression éventuel espace final + commandsMissing=${commandsMissing% } + packagesMissing=${packagesMissing% } + # affichage final + if [ "$commandsMissing" ] && [ "$ENV_DEBIAN" ]; then + $c_echo "$RED""erreur critique, manquant: $STD$BOLD$commandsMissing" \ + "vous devriez exécuter:$GREEN apt install $packagesMissing" + elif [ "$commandsMissing" ]; then + $c_echo "$RED""erreur critique, manquant: $STD$BOLD$commandsMissing" fi + + [ "$commandsMissing" ] && return 1 || return 0 } # $@=cmd à lancer en root avec su ou sudo. si $@ contient :x: x=nombre de tentatives, sinon 2 tentatives par défaut diff --git a/scripts/getFlashPlayer_changelog.md b/scripts/getFlashPlayer_changelog.md index 33eca6c..5945d79 100644 --- a/scripts/getFlashPlayer_changelog.md +++ b/scripts/getFlashPlayer_changelog.md @@ -6,7 +6,7 @@ todo: * révision: fflash_install, changement nom archive -## getFlashPlayer 4.6.0 26/01/2018 +## getFlashPlayer 4.7.0 26/01/2018 * révision: mineur, fscript_cronAnacron fscript_install fscript_remove fscript_update * révision: f__requis