diff --git a/scripts/getThunderbird b/scripts/getThunderbird index afc6ef8..7110fac 100755 --- a/scripts/getThunderbird +++ b/scripts/getThunderbird @@ -1,7 +1,7 @@ #!/bin/bash -version=1.0.0 -date="09/09/2017" +version=1.1.0 +date="23/09/2017" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getThunderbird" @@ -14,7 +14,7 @@ user_agent="Mozilla/5.0 Firefox" # contributeurs: kyodev ##### -f__affichage(){ # v06/2017 définition couleurs +f__affichage(){ # 06/2017 définition couleurs YELLOW="$(printf "\033[0;33m")" # ? GREEN="$(printf "\033[0;32m")" # ok BLUE="$(printf "\033[0;34m")" # info @@ -35,7 +35,7 @@ EOF } # détection architecture, assigne $architecture : linux|linux64, return 1 si architecture inconnue -f__architecture(){ # v07/2017 +f__architecture(){ # 07/2017 case "$(uname -m)" in amd64 | x86_64 ) architecture="linux64";; @@ -54,7 +54,7 @@ f__architecture(){ # v07/2017 } # test validité archive, $1 archive, assigne $archive_detect (gzip|xz|deb|zip), return 1 si inconnue -f__archive_test(){ # v30/08/2017 +f__archive_test(){ # 30/08/2017 local filetest="$(file -b $1)" grep -q 'gzip compressed data' <<< "$filetest" && archive_detect="gzip" grep -q 'bzip2 compressed data' <<< "$filetest" && archive_detect="bzip2" @@ -65,25 +65,27 @@ f__archive_test(){ # v30/08/2017 } # affichage $1 en rouge, $1++ optionnels en bleu, sortie script sur erreur, log $1 si $opType=upgrade -f__error() { # v25/08/2017 +f__error() { # 22/09/2017 echo -e "\n$RED $script $version, erreur critique: $1 $COLOR" - for (( i=2 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done + for (( i=2 ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done + unset i echo "$COLOR" if [ "$opType" == "upgrade" ]; then f__log "$script $version: $1"; fi exit 1 } # affichage des paramètres en bleu, si $1=raw pas de ligne vide à la fin, si $1=log uniquement $2 logué -f__info() { # v25/08/2017 +f__info() { # 22/09/2017 local depart=1 if [ "$1" == "raw" ] || [ "$1" == "log" ]; then depart=2; fi [ "$1" == "log" ] && f__log "$(sed -E 's/\\t//;s/\\n// ' <<< $2 | xargs )" for (( i=$depart ; i<=$# ; i++ )); do echo -e " $BLUE${!i}"; done + unset i [ "$1" == raw ] && printf "$COLOR" || echo "$COLOR" } # log spécifique, fichier log limité à 10000octets, $1 message à loguer -f__log(){ # v08/O9/2017 +f__log(){ # 08/O9/2017 if [ -w "$fileLogs" ]; then if [ "$(stat -c %s $fileLogs)" -ge "10000" ]; then echo "$(date +%Y%m%d\ %H%M%S) $1" &>/dev/null > "$fileLogs" @@ -101,7 +103,7 @@ f__log(){ # v08/O9/2017 # si $2=debOnly et si paquets manquants: return 1 et $debOnlyPackages ( $1=liste paquets ) # si $2=debOnly et si paquets présent: return 0 et $debOnlyPresents ( $1=liste paquets ) # attention priorité $debOnlyPackages sur $debOnlyPresents -f__requis(){ # v30/08/2017-3 +f__requis(){ # 22/09/2017 local dependsMissing packagesMissing command package unset debOnlyPackages debOnlyPresents for i in $1; do @@ -117,6 +119,7 @@ f__requis(){ # v30/08/2017-3 packagesMissing+="$package " fi done + unset i [ "$debOnlyPackages" ] && debOnlyPackages="$(xargs <<< $debOnlyPackages)" # trim début & fin [ "$debOnlyPresents" ] && debOnlyPresents="$(xargs <<< $debOnlyPresents)" # trim début & fin [ "$debOnlyPackages" ] && return 1 @@ -131,7 +134,7 @@ f__requis(){ # v30/08/2017-3 # user ayant initié la session graphique, assigne $user_ # return 1 sur échec identification user, return 2 sur absence home/ # gestion variable environnement user avec: USER_INSTALL=user script -f__user(){ # v30/08/2017-4 +f__user(){ # 30/08/2017-4 if [ "$USER_INSTALL" ]; then # user_ via variable environnement, moyen d'injecter root user_="$USER_INSTALL"; return 0 @@ -165,7 +168,7 @@ f__user(){ # v30/08/2017-4 # test wget, $1 url à tester, sortie script, sur erreur ou retour à la normale # si $2=print affiche url testée & entêtes http & location (si présente) et sortie normale fonction # si $2=loc affiche seulement location -f__wget_test(){ # v07/09/2017 +f__wget_test(){ # 07/09/2017 local file_test_wget retourWget retourHttp location file_test_wget="/tmp/testWget-$RANDOM" wget -Sq --tries=1 --timeout=10 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget" || retourWget="$?" @@ -208,7 +211,7 @@ f__wget_test(){ # v07/09/2017 } # affichage help -f_help(){ # v09/09/2017 +f_help(){ # 09/09/2017 printf $BLUE cat << 'EOF' ---------------------------------------------------------------------- @@ -244,7 +247,7 @@ echo -e " plus d'infos: $GREEN$urlNotice$COLOR\n" } # demande confirmation pour continuer, $1=simple -> avertissement simple -f_tb_alertIcedove(){ # v08/09/2017 +f_tb_alertIcedove(){ # 08/09/2017 if [ -d "/home/$user_/.icedove" ]; then f__info "raw" "$RED""Profil icedove présent.$BLUE Sans utilisateur pour tester, le script n'a pas été conçu pour" \ " prendre en charge automatiquement cette version de thunderbird." @@ -261,7 +264,7 @@ f_tb_alertIcedove(){ # v08/09/2017 } # copie du répertoire défault dans canal, $1=canal -f_tb_default(){ # v09/09/2017 +f_tb_default(){ # 09/09/2017 local canal="$1" profileDefault f__info "copie d'un profil default sur $canal" [ -d "$dirProfil/$canal" ] || mkdir -p "$dirProfil/$canal" # répertoire du profil @@ -279,17 +282,18 @@ f_tb_default(){ # v09/09/2017 } # détermination canal bas Thunderbird installé, assigne $thunderbirdCanalBas -f_tb_get_canalBas(){ # v08/09/2017 - unset ii thunderbirdCanalBas - for ii in beta latest; do - if [ -d "$dirInstall$ii/" ]; then thunderbirdCanalBas="$ii"; fi +f_tb_get_canalBas(){ # 23/09/2017 + unset thunderbirdCanalBas + for i in beta latest; do + if [ -d "$dirInstall$i/" ]; then thunderbirdCanalBas="$i"; fi done + unset i [ "$thunderbirdCanalBas" ] || return 1 } # assigne $verLatest, $verBeta -f_tb_get_versions(){ # v09/09/2017 - local recup_url prefixe verOnline verTbInstall canal tabEspaces=" " verPaquet +f_tb_get_versions(){ # 23/09/2017 + local recup_url prefixe verOnline verTbInstall canal tabEspaces="$(printf " %.s" $(seq 6))" verPaquet architecture="linux64" for canal in latest beta; do # version online @@ -309,6 +313,7 @@ f_tb_get_versions(){ # v09/09/2017 verTbInstall+="$canal: $($dirInstall$canal/thunderbird -v | grep -Eo '[0-9].*')$tabEspaces" fi done + unset canal printf "." [ -x "/usr/lib/thunderbird/thunderbird" ] && verPaquet="$(sed -E 's/^.*Thunderbird (.*)$/\1/' <<< $(/usr/lib/thunderbird/thunderbird -v))" printf ".\n" @@ -321,7 +326,7 @@ f_tb_get_versions(){ # v09/09/2017 } # installation Thunderbird, $1 canal, $2 manuel, $3 archive -f_tb_install(){ # v08/09/2017 +f_tb_install(){ # 08/09/2017 [ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour installer Thunderbird" local versArchive dirTemp fileTemp prefixe canal="$1" if [ "$2" == "manuel" ]; then @@ -380,7 +385,7 @@ f_tb_install(){ # v08/09/2017 } # installation d'un Thunderbird chargé manuellement, $1 canal, $2 fichier archive -f_tb_install_manuel(){ # v07/09/2017 +f_tb_install_manuel(){ # 07/09/2017 [ -e "$2" ] || f__error "fichier $2 introuvable" f__archive_test "$2" || f__error "Le fichier $2 n'est pas une archive valide" f_tb_install "$1" "manuel" "$2" @@ -388,7 +393,7 @@ f_tb_install_manuel(){ # v07/09/2017 } # création lanceur.desktop, $1=canal à traiter -f_tb_lanceur_desktop(){ # v09/09/2017 +f_tb_lanceur_desktop(){ # 09/09/2017 local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$canal.desktop" echo "[Desktop Entry]" >> "$fileDesktop" echo "Name=Thunderbird $canal" >> "$fileDesktop" @@ -412,7 +417,7 @@ f_tb_lanceur_desktop(){ # v09/09/2017 } # traitement utilisateur, $1=canal à installer, $2=user si appel indépendant pour reconfiguration -f_tb_profil_user(){ # v09/09/2017 +f_tb_profil_user(){ # 09/09/2017 local canal="$1" profileDefault nbProfiles if [ "$2" == "user" ] && [ ! -x "/usr/bin/thunderbird-$canal" ]; then f__error "thunderbird <$canal> n'est pas installé" " il faut donc utiliser l'installation et pas l'ajout d'un nouveau profil" @@ -459,7 +464,7 @@ f_tb_profil_user(){ # v09/09/2017 } # désinstallation de Thunderbird, on laisse le profil user, $1=canal -f_tb_remove(){ # v08/09/2017 +f_tb_remove(){ # 08/09/2017 local canal="$1" [ "$EUID" -eq 0 ] || f__error "vous devez être ROOT pour désinstaller Thunderbird" killall "/opt/usr/share/thunderbird-$canal/thunderbird" &>/dev/null @@ -484,7 +489,7 @@ f_tb_remove(){ # v08/09/2017 } # lien /usr/bin/thunderbird pour le plus bas canal thunderbird installé -f_tb_usr_bin(){ # v07/09/2017 +f_tb_usr_bin(){ # 07/09/2017 if f_tb_get_canalBas ; then ln -sf "/usr/bin/thunderbird-$thunderbirdCanalBas" "/usr/bin/thunderbird" f__info " - thunderbird lié à thunderbird-$thunderbirdCanalBas" @@ -492,7 +497,7 @@ f_tb_usr_bin(){ # v07/09/2017 } # inscription dans tache upgrade en anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove -fscript_cronAnacron(){ # v06/09/2017 +fscript_cronAnacron(){ # 06/09/2017 local dirAnacron dirSpool fileAnacron [ "$(type -t fscript_cronAnacron_special)" ] && fscript_cronAnacron_special # test, si fonction spécifique, appel dirAnacron="/home/$user_/.config/anacron" @@ -527,13 +532,13 @@ fscript_cronAnacron(){ # v06/09/2017 } # spécifique script -fscript_cronAnacron_special(){ # v19/08/2017 +fscript_cronAnacron_special(){ # 19/08/2017 rm "/home/$user_/.mozilla/$script.anacrontab" &>/dev/null # ancienne localisation éventuelle rm "/home/$user_/.config/anacron/spool/getFF"* &>/dev/null # ancien job } # version script en ligne, assigne $versionScript, $script_aJour=ok|ko -fscript_get_version(){ # v07/09/2017 +fscript_get_version(){ # 07/09/2017 f__info "raw" "$GREEN""version script en cours: $version" versionScript="$(wget -q --tries=2 --timeout=15 -O - "$urlScript" | grep '^version=' | cut -d '=' -f 2)" if [ "$versionScript" ]; then @@ -548,7 +553,7 @@ fscript_get_version(){ # v07/09/2017 } # installation du script dans le système -fscript_install(){ # v06/09/2017 +fscript_install(){ # 06/09/2017 if grep -q 'bin' <<< "$(dirname $0)" ; then f__info "$RED""l'installation dans le système doit se faire depuis un script local $GREEN(./$script -i )$COLOR" return @@ -575,7 +580,7 @@ fscript_install(){ # v06/09/2017 } # spécifique script -fscript_install_special(){ # v08/09/2017 +fscript_install_special(){ # 08/09/2017 f_tb_alertIcedove "simple" if f__requis "thunderbird icedove" "debOnly" && [ "$debOnlyPresents" ]; then f__info "paquet(s) installé(s) $debOnlyPresents" \ @@ -584,7 +589,7 @@ fscript_install_special(){ # v08/09/2017 } # suppression du script dans le système -fscript_remove(){ # v06/09/2017 +fscript_remove(){ # 06/09/2017 if ! grep -q 'bin' <<< "$(dirname $0)" ; then f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -r)$COLOR" return 1 @@ -606,7 +611,7 @@ fscript_remove(){ # v06/09/2017 } # mise à jour script si dispo -fscript_update(){ # v06/09/2017 +fscript_update(){ # 06/09/2017 if ! grep -q 'bin' <<< "$(dirname $0)" ; then f__info "$RED""cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)$COLOR" return @@ -644,15 +649,17 @@ fileProfileIni="$dirProfil/profiles.ini" produitAll="latest beta" options=$@ -[ "$(dirname $0)" == "." ] && options="-i" # script install -for i in $options; do +if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then options="-i" # script install + +for j in $options; do [ -z "$i" ] && echo 'i zero' - case $i in + case $j in i-latest | i-beta | i-all ) f_tb_alertIcedove produit="$(sed 's/i-//; s/+//' <<< "$1")" if [ "$produit" == "all" ]; then produit="$produitAll"; fi - for i in $produit; do f_tb_install "$i"; done + for k in $produit; do f_tb_install "$k"; done + unset k exit ;; # install: installation canal thunderbird $1=produit m-latest | m-beta ) f_tb_alertIcedove @@ -662,7 +669,8 @@ for i in $options; do r-latest | r-beta | r-all ) produit="$(sed 's/r-//; s/-//' <<< "$1")" if [ "$produit" == "all" ]; then produit="$produitAll"; fi - for i in $produit; do f_tb_remove "$i"; done + for k in $produit; do f_tb_remove "$k"; done + unset k exit ;; # remove: désinstallation thunderbird (y compris ancien répertoire éventuel) u-latest | u-beta ) produit="$(sed 's/u-//' <<< "$1")" @@ -694,7 +702,7 @@ for i in $options; do exit ;; # affichage help esac done - +unset j exit 0 wget -O getThunderbird https://framagit.org/kyodev/kyopages/raw/master/scripts/getThunderbird diff --git a/scripts/getThunderbird_changelog.md b/scripts/getThunderbird_changelog.md index 75e095e..b44f54a 100644 --- a/scripts/getThunderbird_changelog.md +++ b/scripts/getThunderbird_changelog.md @@ -1,6 +1,16 @@ # changelog getThunderbird +## todo + +* placé ln dans /usr/local/bin au lieu de /usr/bin ? + + +## 1.1.0 23/09/2017 + +* f__requis, f__info, f__error unset/for +* révision unset/for + ## 1.0.0 09/09/2017 * 1ère publication