mirror of https://framagit.org/kyodev/kyopages.git
1.1.0
This commit is contained in:
parent
f13f972281
commit
0cfea9a198
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue