diff --git a/docs/scripts/getThunderbird.md b/docs/scripts/getThunderbird.md index 7e21737..dcca4ea 100644 --- a/docs/scripts/getThunderbird.md +++ b/docs/scripts/getThunderbird.md @@ -1,7 +1,7 @@ # getThunderbird -![version: 2.9.1](https://img.shields.io/badge/version-2.9.1-blue.svg?longCache=true&style=for-the-badge) +![version: 2.10.0](https://img.shields.io/badge/version-2.10.0-blue.svg?longCache=true&style=for-the-badge) ![bash langage](https://img.shields.io/badge/bash-4-brightgreen.svg?longCache=true&style=for-the-badge) ![license LPRAB / WTFPL](https://img.shields.io/badge/license-LPRAB%20%2F%20WTFPL-blue.svg?longCache=true&style=for-the-badge) @@ -33,9 +33,9 @@ chmod +x getThunderbird && ./getThunderbird / _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' | | (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| | \__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_| - |___/ version 2.8.0 - 05/03/2018 + |___/ version 2.10.0 - 12/06/2018 - getThunderbird 2.8.0 installé dans le système. + getThunderbird 2.10.0 installé dans le système. maintenant, appel du script par: getThunderbird (sans ./) ``` @@ -62,7 +62,7 @@ getThunderbird i-canal / _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' | | (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| | \__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_| - |___/ version 2.9.0 - 09/06/2018 + |___/ version 2.10.0 - 12/06/2018 installation Thunderbird-latest @@ -76,7 +76,8 @@ getThunderbird i-canal profil Thunderbird latest configuré Thunderbird latest est le défaut système - Thunderbird-latest installé + + Thunderbird-latest 52.8.0 installé ``` @@ -105,7 +106,7 @@ getThunderbird -h / _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' | | (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| | \__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_| - |___/ version 2.9.0 - 09/06/2018 + |___/ version 2.10.0 - 12/06/2018 canaux possibles: latest, beta ( = tous les canaux ) @@ -121,8 +122,8 @@ getThunderbird -h getThunderbird version : versions installées et en ligne - --dev : une version de dev du script (si existante) est recherché - --sauve: le téléchargement est sauvegardé dans le répertoire courant en plus de l'installation + --dev : une version de dev du script (si existante) est recherchée + --sauve : le téléchargement est sauvegardé dans le répertoire courant en plus de l'installation ---------------------------------------------------------------------- ./getThunderbird (ou ./getThunderbird -i) : installation du script dans le système (root) getThunderbird -h, --help : affichage aide @@ -141,15 +142,15 @@ getThunderbird -h getThunderbird version ``` ```text - _ _____ _ _ _ _ _ + _ _____ _ _ _ _ _ __ _ ___| ||_ _| |__ _ _ _ __ __| | ___ _ __| |__ (_)_ __ __| | / _' |/ _ \ __|| | | '_ \| | | | '_ \ / _' |/ _ \ '__| '_ \| | '__/ _' | | (_| | __/ |_ | | | | | | |_| | | | | (_| | __/ | | |_) | | | | (_| | \__, |\___|\__||_| |_| |_|\__,_|_| |_|\__,_|\___|_| |_.__/|_|_| \__,_| - |___/ version 2.9.0 - 09/06/2018 + |___/ version 2.10.0 - 12/06/2018 - script en place: 2.9.0 - script en ligne: 2.9.0 + script en place: 2.10.0 + script en ligne: 2.9.1 Thunderbird en place: latest : 52.8.0 Thunderbird en ligne: latest : 52.8.0 beta : 60.0b7 diff --git a/scripts/getThunderbird b/scripts/getThunderbird index c618831..c412fe6 100755 --- a/scripts/getThunderbird +++ b/scripts/getThunderbird @@ -1,7 +1,7 @@ #!/bin/bash -version=2.9.1 -date="09/06/2018" +version=2.10.0 +date="12/06/2018" script="getThunderbird" # contact="IRC ##sdeb@freenode.net ou https://framagit.org/sdeb/getThunderbird/issues" @@ -114,7 +114,7 @@ f__log(){ # 05/03/2018 # 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(){ # 06/06/2018 +f__requis(){ # 11/06/2018 local ENV_DEBIAN c_echo ireq cmds package commands command commandsMissing packagesMissing if type -p dpkg &>/dev/null ; then @@ -128,7 +128,7 @@ f__requis(){ # 06/06/2018 for ireq in $1; do IFS='>' read -r cmds package <<< "$ireq" # ex: "awk|gawk>gawk wget file tar killall>psmisc" mapfile -t -d '|' commands <<< "${cmds}" - [ -z "$package" ] && package=${commands[0]%$'\n'} # pas de packages dans les options, donc = commands[0 + [ -z "$package" ] && package=${commands[0]%$'\n'} # pas de packages dans les options, donc = commands[0] for command in "${commands[@]%$'\n'}"; do if type -p "$command" &>/dev/null ; then unset commandsMissing packagesMissing @@ -157,40 +157,14 @@ f__requis(){ # 06/06/2018 [ "$commandsMissing" ] && return 1 || return 0 } - # $@=cmd à lancer en root avec su ou sudo. si $@ contient [':x:'] x=nombre de tentatives, 2 par défaut - # si sudo si possible sera utilisé. - # si su &2 redirigé sur &1 - # si bash inexistant, return 2 -f__sudo(){ # 10/06/2018 - local nb sudo isudo options nbDefault=2 + # $@=cmd à lancer en root avec su ou sudo. si sudo possible: prioritairesu su +f__sudo(){ # 11/06/2018 - # détermination sudo possible if sudo -v &>/dev/null && [ $EUID -ne 0 ] ; then - sudo="sudo su --preserve-environment -c " + sudo su --preserve-environment -c "$@" else - sudo="su --preserve-environment -c " - fi - # extraction nb de tentatives éventuel - if [[ "$*" =~ :.{1,2}: ]]; then - nb="$*" - nb=${nb#*:} - nb=${nb%:*} - options=${*//:$nb:/ } - (( nb+1 )) 2>/dev/null || nb="$nbDefault" # test si numérique, sinon, - else - nb="$nbDefault" - options="$*" - fi - # lancement cmds - if [[ "$sudo" =~ ^sudo ]]; then - $sudo "$options" - else - for (( isudo=1 ; isudo<="$nb" ; isudo++ )); do - echo -e "[su] Mot de passe root :" - $sudo "$options" 2>/dev/null && break - [ "$isudo" == "$nb" ] && return 1 - done - echo + echo -n "[su] " + su --preserve-environment -c "$@" fi } @@ -317,25 +291,25 @@ f_affichage(){ # 09/06/2018 } # affichage help -f_help(){ # 10/06/2018 +f_help(){ # 11/06/2018 cat <<- end canaux possibles:$GREEN latest, beta$STD ( = tous les canaux ) 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 - $BLUE$script d-$STD${GREEN}canal$STD : copier un profil ${RED}.d${STD}efault existant sur - $BLUE$script m-$STD${GREEN}canal archi$STD : installation sur le d'une ve 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 t-$STD${GREEN}canal$STD : téléchargement du dans le répertoire courant (sans installation) - $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 i-$STD${GREEN}canal :$STD ${RED}i${STD}nstallation de $appli $RED(root)$STD + $BLUE$script d-$STD${GREEN}canal :$STD copier un profil ${RED}.d${STD}efault existant sur + $BLUE$script m-$STD${GREEN}canal archi :$STD installation sur le d'une ve 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${GREEN} :$STD ${RED}r${STD}éparation$RED i${STD}cône(s) dans le menu + $BLUE$script t-$STD${GREEN}canal :$STD téléchargement du dans le répertoire courant (sans installation) + $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 + $BLUE$script version :$STD versions installées et en ligne - $GREEN --dev$STD : une version de dev du script (si existante) est recherchée - $GREEN --sauve$STD: le téléchargement est sauvegardé dans le répertoire courant ${BOLD}en$STD plus de l'installation + $GREEN --dev :$STD une version de dev du script (si existante) est recherchée + $GREEN --sauve :$STD le téléchargement est sauvegardé dans le répertoire courant ${BOLD}en$STD plus de l'installation ---------------------------------------------------------------------- $BLUE./$script$STD (ou $BLUE./$script -i$STD) : installation du script dans le système $RED(root)$STD $BLUE$script -h$STD, --help : affichage aide @@ -415,7 +389,7 @@ f_tb_config_system(){ # 09/06/2018 # set default=1 dans profiles.ini while read -r ligne ; do # shellcheck disable=SC2034 - [[ ${ligne} =~ ^\[Profile.*\]$ ]] && numero=${ligne//[\[Profile\]]} # n° profil, pas utilisé + [[ ${ligne} =~ ^\[Profile.*\]$ ]] && numero=${ligne//[\[Profile\]]} # n° profil, pas encore utilisé [ "$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) @@ -508,18 +482,21 @@ f_tb_get_versions(){ # 10/06/2018 } # installation, $1 canal [$2='manuel', $3 archive] -f_tb_install(){ # 10/06/2018 - local versArchive fileTemp prefixe canal="$1" dirTemp="/tmp/$script-install_tb" +f_tb_install(){ # 12/06/2018 + local versArchive tbVersion fileTemp prefixe canal="$1" appli="thunderbird" dirTemp="/tmp/$script-install_tb" if [ "$2" == "manuel" ]; then versArchive=${3%\.tar*} # version mozilla thunderbird-52.8.0.tar.bz2 versArchive=${versArchive%\.linux*} # ancienne version thunderbird-52.0.0.linux64.tar.bz2 versArchive=${versArchive%_*} # version encours - versArchive=${versArchive#*-} + versArchive=${versArchive##*-} f__info raw "installation manuelle dans $canal de thunderbird version $versArchive ($3)" fileTemp="$3" - mkdir -p "$dirTemp" else + if ! mkdir -p "$dirTemp" 2>/dev/null; then # contournement bug? bash, utile si téléchargement et mauvais effacement précédent + dirTemp+="-$RANDOM" + ! mkdir -p "$dirTemp" 2>/dev/null && f__error "droits insuffisants, recommencer avec les droits root" + fi [ -z "$dl_only" ] && f__info "installation $appli-$canal" (( x_tb_get_version == 1 )) || f_tb_get_versions quiet case "$1" in @@ -527,25 +504,30 @@ f_tb_install(){ # 10/06/2018 beta ) tbVersion="$version_tb_beta" ;; esac fileTemp="$dirTemp/${appli,,}-${tbVersion}_$canal.$fu_archi.tar.bz2" - # téléchargement & test archive + f__info " - téléchargement..." + # calcul url [ "$canal" == "beta" ] && prefixe="$canal-" recup_url="https://download.mozilla.org/?product=thunderbird-$prefixe""latest&os=$fu_archi&lang=fr" - mkdir -p "$dirTemp" - if ! wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" -o /dev/null -O "$fileTemp" "$recup_url" ; then - f__wget_test "$recup_url" + # téléchargement + if ! wget -q -c --show-progress --tries=2 --timeout=15 --user-agent="$user_agent" \ + -o /dev/null -O "$fileTemp" "$recup_url" ; then + f__wget_test "$recup_url" fi fi f__archive_test "$fileTemp" || f__error "Le fichier $fileTemp n'est pas une archive tar.bz2 valide" + echo + if [[ "$dl_to_svg" || "$dl_only" ]]; then chown "$fu_user:" "$fileTemp" - cp "$fileTemp" ./ + cp --preserve "$fileTemp" ./ fi - echo if [ "$dl_only" ]; then - rm "$fileTemp" + rm -f "$fileTemp" + echo return 0 fi + # décompression archive téléchargée dans dossier de travail f__info " - décompression..." tar -xaf "$fileTemp" -C "$dirTemp/" @@ -580,11 +562,9 @@ f_tb_install(){ # 10/06/2018 f_tb_config_profil "$canal" # profiles.ini, répertoire profil f_tb_config_system "$canal" # lien /usr/bin, default dans le profile - if [ "$2" == "manuel" ]; then - f__info "log" "archive $appli-$canal $versArchive installée" - else - f__info "log" "$appli-$canal installé" - fi + [ "$1" != "manuel" ] && versArchive=$tbVersion + echo + f__info "log" "$appli-$canal $versArchive installé" } # installation d'une archive manuelle, $1=canal, $2=archive @@ -657,7 +637,7 @@ f_tb_remove(){ # 09/06/2018 } # anacron hebdomadaire, via cron horaire, $1=upgrade|install|remove -fscript_cronAnacron(){ # 09/06/2018 +fscript_cronAnacron(){ # 11/06/2018 local dirAnacron dirSpool fileAnacron type -t fscript_cronAnacron_special &>/dev/null && fscript_cronAnacron_special # test, si fonction spécifique, appel @@ -672,7 +652,7 @@ fscript_cronAnacron(){ # 09/06/2018 echo "7 10 $script nice $script_install --upgrade 1>/dev/null" > "$fileAnacron" # juste erreurs en syslog ## anacron journalier pour dev logname if [ -e "$fileDev" ]; then - echo "1 00 $script""Dev nice $script_install --upgrade 1>/dev/null" >> "$fileAnacron" + echo "1 00 ${script}Dev nice $script_install --upgrade 1>/dev/null" >> "$fileAnacron" fi # création spool anacron utilisateur mkdir -p "$dirSpool" @@ -770,12 +750,11 @@ fscript_remove(){ # 09/06/2018 f__info "log" "$script $version supprimé du système." } - # si upgrade en place, $1 != "", [$1 message info] -# shellcheck disable=SC2120 -# function references arguments, but none are ever passed. -fscript_update(){ # 09/06/2018 - local dirTemp="/tmp/$script-maj" upgradeEnPlace="$1" + # $1: update standard $1=std, si update en place $1=message d'info +fscript_update(){ # 11/06/2018 + local dirTemp="/tmp/$script-maj" upgradeEnPlace + [ "$1" != 'std' ] && upgradeEnPlace="$1" type -t fscript_update_special &>/dev/null && fscript_update_special # test, si fonction spécifique, appel if [ -z "$upgradeEnPlace" ] && ! grep -Eq "$script_install|/usr/bin/$script" <<< "$0"; then f__info "${RED}cette fonction doit être appelée depuis le script installé dans le système $GREEN($script -u)" @@ -889,11 +868,11 @@ for i in "${!options[@]}"; do # deuxième passe options, actions # shellcheck disable=SC2221,SC2222 case ${options[$i]} in -i | --install | -r | --remove | ri | i-* | m-* | r-* | u-* ) - if [ "$EUID" -ne 0 ]; then - f__info raw "vous devez être$RED ROOT$BLUE pour cette opération" - f__sudo "exec $0 $script_options" - exit - fi ;;& + if [ "$EUID" -ne 0 ]; then + f__info raw "vous devez être$RED ROOT$BLUE pour cette opération" + f__sudo "exec $0 $script_options" + exit + fi ;;& d-latest | d-beta | d-all ) [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do @@ -921,7 +900,7 @@ for i in "${!options[@]}"; do # deuxième passe options, actions [ "$produit" == "all" ] && produit="$produit_all" for k in $produit; do dl_only="ok" - f_tb_install "$k" # installation canal + f_tb_install "$k" # téléchargement done ;; u-latest | u-beta | u-all ) [ "$produit" == "all" ] && produit="$produit_all" @@ -944,7 +923,7 @@ for i in "${!options[@]}"; do # deuxième passe options, actions -u | --upgrade ) # upgrade script operation="upgrade" # shellcheck disable=SC2119 - fscript_update + fscript_update std # std argument obligatoire pour upgrade normal exit ;; -v | --version ) # version du script, en ligne et exécuté fscript_get_version ;;