This commit is contained in:
kyodev 2017-09-23 11:35:46 +02:00
parent f13f972281
commit 0cfea9a198
2 changed files with 58 additions and 40 deletions

View File

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

View File

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