From 02cc6bcbf9f56812482d47cdd256d2a2901088ea Mon Sep 17 00:00:00 2001 From: Bruno Tavares Date: Sun, 2 Mar 2014 20:11:31 -0300 Subject: [PATCH] Add yum support to kickstart.package functions Yum only supports passing one package to check its info. Other package managers allow you to have several packages name, and return non-zero whenever one is not installed. To have the same behaviour on yum, we iterate over the list until we find one that is not installed. --- kickstart/recipes/kickstart/package.sh | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/kickstart/recipes/kickstart/package.sh b/kickstart/recipes/kickstart/package.sh index 92617a8..5581f69 100644 --- a/kickstart/recipes/kickstart/package.sh +++ b/kickstart/recipes/kickstart/package.sh @@ -1,13 +1,21 @@ kickstart.package.manager() { kickstart.command_exists apt-get && echo "apt-get" && return 0 kickstart.command_exists brew && echo "brew" && return 0 - kickstart.info "kickstart supports apt-get or brew" && exit 1 + kickstart.command_exists yum && echo "yum" && return 0 + kickstart.info "kickstart supports apt-get, yum or brew" && exit 1 } kickstart.package.installed() { local pkg_manager=`kickstart.package.manager` [ $pkg_manager = 'apt-get' ] && dpkg -s "$@" >/dev/null 2>&1 && return $? [ $pkg_manager = 'brew' ] && ! $(brew info "$@" | kickstart.stream.contains "Not installed") && return $? + if [ $pkg_manager = 'yum' ]; then + local yum_packages="`yum list installed`" + for package in "$@"; do + kickstart.stream.contains $package <<<$yum_packages || return 1 + done + return 0 + fi } kickstart.package.install() {