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 +}