getThunderbird 2.3.0

This commit is contained in:
kyodev 2018-01-23 22:10:51 +01:00
parent 3df0c1f94e
commit 4168336d7f
2 changed files with 107 additions and 83 deletions

View File

@ -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"
" <all> = 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 <canal> $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 <canal>"
" $BLUE$script m-$STD$GREEN""canal$STD : installation sur le <canal> 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 <canal> $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

View File

@ -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