mirror of https://framagit.org/kyodev/kyopages.git
maj
This commit is contained in:
parent
a3647f09d6
commit
974a618505
|
@ -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 ( <all> = 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
|
||||
|
|
|
@ -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 ( <all> = 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 <canal> $RED(root)$STD
|
||||
$BLUE$script d-$STD${GREEN}canal$STD : copier un profil ${RED}.d${STD}efault existant sur <canal>
|
||||
$BLUE$script m-$STD${GREEN}canal archi$STD : installation sur le <canal> d'une <archi>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 <canal> $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 <canal> 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 <canal> $RED(root)$STD
|
||||
$BLUE$script d-$STD${GREEN}canal :$STD copier un profil ${RED}.d${STD}efault existant sur <canal>
|
||||
$BLUE$script m-$STD${GREEN}canal archi :$STD installation sur le <canal> d'une <archi>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 <canal> $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 <canal> 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 ;;
|
||||
|
|
Loading…
Reference in New Issue