#!/bin/sh # # Copyright (C) 2012 Etersoft # Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru> # # This file is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. # load_helper epm-install load_helper epm-search _epm_do_simulate() { local CMD local filenames=$@ case $PMTYPE in apt-rpm|apt-dpkg) CMD="apt-get --simulate install" ;; yum-rpm) LC_ALL=C sudocmd yum --assumeno install $filenames # FIXME: check only error output LC_ALL=C sudocmd yum --assumeno install $filenames 2>&1 | grep "^No package" && return 1 return 0 ;; urpm-rpm) CMD="urpmi --test --auto" ;; zypper-rpm) CMD="zypper --non-interactive install --dry-run" ;; emerge) echo "FIXME: Skip with emerge" return ;; pacman) showcmd $SUDO pacman -v -S $filenames echo no | $SUDO pacman -v -S $filenames return ;; slackpkg) #docmd /usr/sbin/slackpkg -batch=on -default_answer=yes download # just try search every package # FIXME: epm_search have to return false status code if the package does not found local pkg res res=0 for pkg in $filenames ; do pkg_filenames="$pkg-[0-9]" epm_search | grep -E "(installed|upgrade)" && continue pkg_filenames="$pkg" epm_search | grep -E "(installed|upgrade)" && continue res=1 echo "Does not found in repository." done return $res ;; *) fatal "Do not known simulate command for $PMTYPE" ;; esac sudocmd $CMD $filenames } epm_simulate() { [ -z "$pkg_filenames" ] && echo "Skip empty list" && return 2 local filenames="$(echo $pkg_filenames | filter_out_installed_packages)" [ -z "$filenames" ] && echo "All packages are already installed" && return 0 _epm_do_simulate $filenames local RES=$? if [ -z "$quiet" ] ; then [ "$RES" = 0 ] && echo "Result: $filenames package(s) CAN BE installed" || echo "Result: There are PROBLEMS with install some package(s)" fi return $RES }