From 1864cdf4dd2e391ed1e5819e82863ca8eb2b35de Mon Sep 17 00:00:00 2001 From: Jephte Clain Date: Tue, 5 Apr 2016 12:23:10 +0400 Subject: [PATCH] =?UTF-8?q?fonctions=20pour=20faciliter=20la=20gestion=20d?= =?UTF-8?q?es=20d=C3=A9pendances=20sous=20debian?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/ulib/debian | 9 +++++++ lib/ulib/sysinfos | 66 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) diff --git a/lib/ulib/debian b/lib/ulib/debian index 7f735a6..1e9d06a 100644 --- a/lib/ulib/debian +++ b/lib/ulib/debian @@ -50,6 +50,15 @@ function pkg_installm() { fi } +function pkg_check_install() { + # Si le programme $1 n'existe pas, alors installer les packages $2..$@ + # S'il n'y a pas d'arguments $2..$@ utiliser $1 comme nom de package + # Retourner 0 si au moins un des packages a été installé + progexists "$1" && return 1 + [ $# -gt 1 ] && shift + pkg_installm "$@" +} + ################################################################################ # Gestion des services diff --git a/lib/ulib/sysinfos b/lib/ulib/sysinfos index 5c8d1e2..99cd0ea 100644 --- a/lib/ulib/sysinfos +++ b/lib/ulib/sysinfos @@ -479,3 +479,69 @@ function check_sysinfos() { done return $r_ } + +# fonctions de support pour tester certaines versions de debian +# utilisation: +# on_debian +# if on_jessie; then +# elif on_wheezy; then +# elif on_squeeze; then +# else +# fi +# OU: +# on_debian: +# on_jessie xxx +# on_wheezy yyy +# on_squeeze zzz +# on_default ttt +# Sans arguments, on_{jessie,wheezy,squeeze} teste si on sur la version demandée +# OU SUPERIEURE. Avec un argument, la version EXACTE est testée, et la commande +# est lancée en cas de correspondance +function on_debian() { + NUTOOLS_ON_DEBIAN= + if check_sysinfos -d debian; then + urequire debian + NUTOOLS_ON_DEBIAN=1 + return 0 + else + return 1 + fi +} +function on_debian:() { on_debian "$@"; } +function __on_debian() { + [ -z "$NUTOOLS_ON_DEBIAN" -o "$NUTOOLS_ON_DEBIAN" != 1 ] && return 1 + local sysver="$1"; shift + if [ $# -gt 0 ]; then + if check_sysinfos -d debian -v "$sysver"; then + NUTOOLS_ON_DEBIAN="$sysver" + "$@" + return 0 + else + return 1 + fi + else + if check_sysinfos -d debian -v "$sysver+"; then + NUTOOLS_ON_DEBIAN="$sysver" + return 0 + fi + fi +} + +function on_stretch() { __on_debian stretch "$@"; } +function on_jessie() { __on_debian jessie "$@"; } +function on_wheezy() { __on_debian wheezy "$@"; } +function on_squeeze() { __on_debian squeeze "$@"; } +function on_default() { + if [ "$NUTOOLS_ON_DEBIAN" == 1 ]; then + if [ $# -gt 0 ]; then + "$@" + return 0 + else + return 0 + fi + elif [ -n "$NUTOOLS_ON_DEBIAN" ]; then + return 1 + fi + #XXX ici, on peut ajouter le code de support pour d'autres systèmes + return 1 +}