From 4168336d7f16254924810042a0d6d2976f09e1ab Mon Sep 17 00:00:00 2001 From: kyodev <> Date: Tue, 23 Jan 2018 22:10:51 +0100 Subject: [PATCH] getThunderbird 2.3.0 --- scripts/getThunderbird | 177 +++++++++++++++------------- scripts/getThunderbird_changelog.md | 13 ++ 2 files changed, 107 insertions(+), 83 deletions(-) diff --git a/scripts/getThunderbird b/scripts/getThunderbird index c3b9133..9c9c295 100755 --- a/scripts/getThunderbird +++ b/scripts/getThunderbird @@ -1,7 +1,7 @@ #!/bin/bash -version=2.2.0 -date="12/01/2018" +version=2.3.0 +date="16/01/2018" projet="simpledeb" contact="IRC freenode ##sdeb ou https://framagit.org/kyodev/kyopages/issues/" script="getThunderbird" @@ -136,9 +136,10 @@ f__requis(){ # 4/12/2017 fi } - # $1=cmd si $2: nb de tentatives pour s'identifier, sinon 2 tentatives par défaut, suppose bash existant -f__sudo(){ # 23/12/2017 - local nb=2 sudo isudo toBash + # $@=cmd à lancer en root avec su ou sudo. si $@ contient :x: x=nombre de tentatives, sinon 2 tentatives par défaut + # si bash inexistant, return 2 +f__sudo(){ # 14/01/2018 + local nb sudo isudo toBash options type -p bash &>/dev/null && toBash=$( type -p bash ) || return 2 # sudo --shell bash équivalent su ? @@ -147,9 +148,16 @@ f__sudo(){ # 23/12/2017 else sudo="su --shell $toBash --preserve-environment -c " fi - [ "$2" ] && nb=$(( "$2" )) + if [[ "$@" =~ :??: ]]; then + nb="$@" + nb=${nb#*:} + nb=${nb%:*} + else + nb=2 + fi + options=${@//:$nb:/ } for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do - $sudo " $1" + $sudo " $options" [ "$?" == 0 ] && break [ "$isudo" == "$nb" ] && return 1 done @@ -204,7 +212,7 @@ f__user(){ # 3/12/2017 # si $2=print affiche url testée & entêtes http & location, return 0 # si $2=loc affiche seulement location, return 0 # si $2=test return 0 si ok, return 1 si KO -f__wget_test(){ # 24/12/2017 +f__wget_test(){ # 16/01/2018 local file_test_wget="/tmp/testWget-$script" retourWget retourHttp location wget -Sq --timeout=5 --tries=2 --user-agent="$user_agent" --spider --save-headers "$1" &>"$file_test_wget" @@ -227,15 +235,14 @@ f__wget_test(){ # 24/12/2017 fi if [ "$2" == "print" ]; then if [ "$retourWget" != "0" ]; then - echo "erreur wget: erreur $RED$retourWget" - echo -e "$BLUE $1$STD\t$RED $retourHttp" + echo " erreur wget: erreur $RED$retourWget" + echo -e "$BLUE $1$STD\t$RED $retourHttp$STD" else - echo -e "$BLUE $1$STD\t$GREEN $retourHttp" + echo -e "$BLUE $1$STD\t$GREEN $retourHttp$STD" fi - echo "$STD" fi if [ "$2" == "print" ] || [ "$2" == "loc" ]; then - [ "$location" ] && echo -n "$YELLOW$location" || echo -n "$YELLOW""no location" + [ "$location" ] && echo -n "$YELLOW $location" || echo -n "$YELLOW no location" echo "$STD" rm -f "$file_test_wget" return 0 @@ -269,8 +276,8 @@ EOF } # affichage help -f_help(){ # 26/12/2017 - local ih appli="Thunderbird" help=( +f_help(){ # 15/01/2018 + local ih help=( " ----------------------------------------------------------------------" " canaux possibles:$GREEN latest, beta$STD" " = tous les canaux" @@ -278,10 +285,12 @@ f_help(){ # 26/12/2017 " exemple, installation version Release (latest): $BLUE$script i-latest$STD" " " " $BLUE$script i-$STD$GREEN""canal$STD : $RED""i$STD""nstallation de $appli $RED(root)$STD" + " avec option $GREEN--sauve$STD l'archive téléchargée est sauvegardée dans le répertoire courant" " " " $BLUE$script d-$STD$GREEN""canal$STD : copier un profil $RED"".d$STD""efault existant sur " " $BLUE$script m-$STD$GREEN""canal$STD : installation sur le d'une archive téléchargée $RED""m$STD""anuellement $RED(root)$STD" " $BLUE$script r-$STD$GREEN""canal$STD : désinstallation ($RED""r$STD""emove) du $RED(root)$STD" + " $BLUE$script ri$STD : $RED""r$STD""éparation$RED i$STD""cône(s) dans le menu" " $BLUE$script u-$STD$GREEN""canal$STD : profil pour l'$RED""u$STD""tilisateur en cours et comme défaut système $RED(root)$STD" " " " $BLUE$script version$STD : versions installées et en ligne" @@ -311,8 +320,8 @@ f_tb_alertIcedove(){ # 25/12/2017 } # traitement utilisateur, $1=canal, [$2='menu' si appel indépendant pour reconfiguration] -f_tb_config_profil(){ # 27/12/2017 - local nbProfiles canal="$1" appli="Thunderbird" +f_tb_config_profil(){ # 14/01/2018 + local nbProfiles canal="$1" if [ ! -d "$dirInstall$canal" ] && [ "$2" == "menu" ]; then # pas de répertoire programme f__info "$appli $canal n'est pas installé" @@ -345,15 +354,10 @@ f_tb_config_profil(){ # 27/12/2017 } # traitement système: lien /usr/bin, default profiles.ini, $1 canal -f_tb_config_system(){ # 27/12/2017 - local canal="$1" appli="Thunderbird" +f_tb_config_system(){ # 14/01/2018 + local canal="$1" local ligne numero marqueur stockage profileIni="$dirProfil/profiles.ini" - if [ "$EUID" -ne 0 ]; then - f__info "vous devez être$RED ROOT$BLUE pour configurer $canal comme défaut dans le système" - f__sudo "exec $0 u-$canal" - return $? - fi if [ ! -d "$dirInstall$canal" ]; then f__info "$appli $canal n'est pas installé" return 1 @@ -372,14 +376,14 @@ f_tb_config_system(){ # 27/12/2017 # set default=1 dans profiles.ini while read -r ligne ; do [[ ${ligne} =~ ^\[Profile.*\]$ ]] && numero=${ligne//[\[Profile\]]} # n° profil, pas utilisé - [ "$ligne" == "Name=$canal" ] && marqueur="ok" # détection canal recherché, marqueur actif - [ "$ligne" == "Default=1" ] && continue # si Default existant, on saute + [ "$ligne" == "Name=$canal" ] && marqueur="ok" # détection canal recherché? marqueur actif + [[ $ligne == "Default=1" ]] && continue # si Default existant, on saute, la ligne ne fera donc pas partie de $stockage (=effacement) if [ "$marqueur" == "ok" ] && [ -z "$ligne" ]; then # marqueur actif, première ligne vide rencontrée ligne+="Default=1"$'\n' # ajout Default=1 unset marqueur # effacement marqueur fi - stockage+="$ligne"$'\n' # stockage ligne + stockage+="$ligne"$'\n' # stockage lignes brutes ou traitées done < "$profileIni" if [ "$marqueur" == "ok" ]; then # marqueur encore actif (dernier profil), read ne permet de choper dernière ligne vide stockage+="Default=1" # ajout Default=1 @@ -429,8 +433,8 @@ f_tb_get_canalBas(){ # 25/12/2017 } # version en ligne et installée, affichage -f_tb_get_versions(){ # 25/12/2017 - local canal recup_url prefixe verOnline verTbOnline verInstall verTbInstall appli="Thunderbird" +f_tb_get_versions(){ # 14/01/2018 + local canal recup_url prefixe verOnline verTbOnline verInstall verTbInstall for canal in latest beta; do # version online @@ -455,18 +459,9 @@ f_tb_get_versions(){ # 25/12/2017 } # installation, $1 canal [$2='manuel', $3 archive] -f_tb_install(){ # 26/12/2017 - local versArchive fileTemp prefixe canal="$1" dirTemp="/tmp/$script-install_tb" appli="Thunderbird" +f_tb_install(){ # 15/01/2018 + local versArchive fileTemp prefixe canal="$1" dirTemp="/tmp/$script-install_tb" - if [ "$EUID" -ne 0 ]; then - f__info "vous devez être$RED ROOT$BLUE pour installer $appli $canal dans le système" - if [ "$2" == "manuel" ]; then - f__sudo "exec $0 m-$1 $3" - else - f__sudo "exec $0 i-$1" - fi - return $? - fi if [ "$2" == "manuel" ]; then versArchive=$( sed -E 's/.*thunderbird-(.*)\.tar\.bz2.*$/\1/' <<< $(basename $3) ) f__info "installation manuelle dans $canal de thunderbird version $versArchive ($3)" @@ -474,7 +469,7 @@ f_tb_install(){ # 26/12/2017 mkdir -p "$dirTemp" else f__info "installation $appli-$canal" - fileTemp="$dirTemp/thunderbird-$canal.$fu_archi.tar.bz2" + fileTemp="$dirTemp/${appli,,}-$canal.$fu_archi.tar.bz2" # téléchargement & test archive f__info " - téléchargement..." [ "$canal" == "beta" ] && prefixe="$canal-" @@ -496,6 +491,10 @@ f_tb_install(){ # 26/12/2017 mv -f "$dirTemp/thunderbird/"* "$dirInstall$canal/" chown -R "$fu_user:" "$dirInstall$canal/" chmod -R g+wrs,a+r "$dirInstall$canal/" + if [ "$dl_to_svg" == "ok" ]; then + chown -R "$fu_user:" "$fileTemp" + mv "$fileTemp" ./ + fi rm -rf "$dirTemp/" # traitement finaux système @@ -531,8 +530,10 @@ f_tb_install_manuel(){ # 25/12/2017 } # création lanceur.desktop, $1=canal à traiter -f_tb_lanceur_desktop(){ # 25/12/2017 - local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$1.desktop" appli="Thunderbird" +f_tb_lanceur_desktop(){ # 14/01/2018 + local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$1.desktop" + + [ -d "$dirInstall$canal" ] || return 0 # pas d'installation? sortie echo "[Desktop Entry]" > "$fileDesktop" echo "Name=$appli $canal" >> "$fileDesktop" @@ -560,14 +561,9 @@ f_tb_lanceur_desktop(){ # 25/12/2017 } # désinstallation, $1=canal -f_tb_remove(){ # 26/12/2017 - local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$1.desktop" appli="Thunderbird" +f_tb_remove(){ # 14/01/2018 + local canal="$1" fileDesktop="/usr/share/applications/thunderbird-$1.desktop" - if [ "$EUID" -ne 0 ]; then - f__info "vous devez être$RED ROOT$BLUE pour désinstaller $appli $canal" - f__sudo "exec $0 r-$canal" - return $? - fi if [ ! -d "$dirInstall$canal" ]; then f__info "$appli $canal n'est pas installé" return 1 @@ -656,17 +652,12 @@ fscript_get_version(){ # 03/01/2018 } # installation du script dans le système -fscript_install(){ # 27/12/2017 +fscript_install(){ # 15/01/2018 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 )" return 1 fi - if [ "$EUID" -ne 0 ]; then - f__info "vous devez être$RED ROOT$BLUE pour installer ce script dans le système" - f__sudo "exec $0 -i" - return $? - fi [ "$( type -t fscript_install_special )" ] && fscript_install_special # test, si fonction spécifique, appel f__requis "wget anacron cron" || exit 1 @@ -687,7 +678,7 @@ fscript_install(){ # 27/12/2017 } # suppression du script dans le système -fscript_remove(){ # 27/12/2017 +fscript_remove(){ # 15/01/2018 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)" @@ -697,11 +688,6 @@ fscript_remove(){ # 27/12/2017 f__info "$RED$script n'est pas installé" return 1 fi - if [ "$EUID" -ne 0 ]; then - f__info "vous devez être$RED ROOT$BLUE pour supprimer ce script dans le système" - f__sudo "exec $0 -r" - return $? - fi [ "$( type -t fscript_remove_special )" ] && fscript_remove_special # test, si fonction spécifique, appel # suppression de /opt lien /usr/bin @@ -806,6 +792,7 @@ url_script="https://framagit.org/kyodev/kyopages/raw/master/scripts/getThunderbi url_notice="https://kyodev.frama.io/kyopages/scripts/getThunderbird/" # paramètres Thunderbird +appli="Thunderbird" dirInstall="/opt/usr/share/thunderbird-" dirProfil="/home/$fu_user/.thunderbird" # emplacement profiles.ini produit_all="latest beta" @@ -813,49 +800,73 @@ produit_all_inverse="beta latest" options=$@ -if [ "$(dirname $0)" == "." ] && [ ! -e "$fileDev" ]; then - options="-i" # script install + # auto-installation script éventuel, si pas de marqueur $fileDev +if [[ $( dirname $0 ) != $( dirname $script_install ) && $( dirname $0 ) != "/usr/bin" && ! -e "$fileDev" ]]; then + options="-i" # option installation script fi -[ "$options" ] || options="-h" # vide? help -for j in $options; do +for j in $options; do # première passe options case $j in - d-latest | d-beta | i-all ) + -i | --install | -r | --remove | ri | i-* | m-* | r-* | u-* ) + if [ "$EUID" -ne 0 ]; then + f__info "vous devez être$RED ROOT$BLUE pour cette opération" + f__sudo "exec $0 $@" + exit + fi + ;;& + --sauve ) + dl_to_svg="ok" + ;;& + esac +done +options=${options//--sauve/ } + +[ "$options" ] || options="-h" # vide? help + +for j in $options; do # deuxième passe options, actions + case $j in + d-latest | d-beta | d-all ) produit=${j#*-} [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do - f_tb_copie_default "$k" # copier un profil default sur un canal + f_tb_copie_default "$k" # copier un profil default sur un canal done - exit ;; + ;; i-latest | i-beta | i-all ) produit=${j#*-} [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do - f_tb_install "$k" # installation canal + f_tb_install "$k" # installation canal done - exit ;; + ;; m-latest | m-beta ) produit=${j#*-} - f_tb_install_manuel "$produit" "$2" # installation manuelle d'une archive, $2=archive - exit ;; - r-latest | r-beta | r-all | i-all ) + f_tb_install_manuel "$produit" "$2" # installation manuelle d'une archive, $2=archive + ;; + r-latest | r-beta | r-all ) produit=${j#*-} [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do - f_tb_remove "$k" # remove + f_tb_remove "$k" # remove done - exit ;; - u-latest | u-beta | r-all ) + ;; + ri ) + produit="$produit_all" + for k in $produit; do + f_tb_lanceur_desktop "$k" # réparation icône de tous les canaux installés + done + ;; + u-latest | u-beta | u-all ) produit=${j#*-} [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do - f_tb_config_profil "$k" "menu" # configurer un profil thunderbird pour un user - f_tb_config_system "$k" # défaut système + f_tb_config_profil "$k" "menu" # configurer un canal pour user en cours + f_tb_config_system "$k" # défaut système echo done - exit ;; + ;; - version | versions ) # affiche versions thunderbird en ligne & installées, script + version | versions ) # affiche versions thunderbird en ligne & installées, script fscript_get_version f_tb_get_versions ;; @@ -872,10 +883,10 @@ for j in $options; do exit ;; -v | --version ) # version du script, en ligne et exécuté fscript_get_version - exit ;; + ;; -h | --help | * ) # affichage help f_help - exit ;; + ;; esac done diff --git a/scripts/getThunderbird_changelog.md b/scripts/getThunderbird_changelog.md index ca65747..c143dfe 100644 --- a/scripts/getThunderbird_changelog.md +++ b/scripts/getThunderbird_changelog.md @@ -1,6 +1,19 @@ # changelog getThunderbird +## getThunderbird 2.3.0 16/01/2018 + +* nouveau: cumul options (opérations) possibles (sauf opés scripts) +* nouveau: option --sauve pour conserver le téléchargement à l'installation +* révision; f__wget_test +* révision: f_sudo abandonné dans fscript_install et fscript_remove, au profit appel au traitement général des options +* révision: général, invocation f__sudo dans traitement options, plus confortable si su & _all_ +* révision: f_sudo, format nombre de tentatives et options appel possibles > 1 +* révision: $appli en global au lieu de local +* révision: menu réparation icône pour tous les canaux installés, menu help en conséquence +* révision: auto-installation, potentiel bug selon conditions appel +* fix: options all + ## getThunderbird 2.2.0 12/01/2018 * fix: correction commentaire fscript_get_version