epm-remove 2.77 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
#!/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.
#

21
# Try remove with low level removing
22 23
epm_remove_low()
{
24 25 26
	[ -z "$1" ] && return
	case $PMTYPE in
		apt-rpm|yum-rpm|zypper-rpm|urpm-rpm)
27
			docmd $SUDO rpm -ev $nodeps $@
28 29 30 31 32 33 34 35 36 37
			return ;;
		apt-dpkg)
			docmd $SUDO dpkg -P $@
			return ;;
		pkg_add)
			docmd $SUDO pkg_delete -r $@
			return ;;
		emerge)
			docmd $SUDO emerge -unmerge $@
			return ;;
38
		slackpkg)
39 40
			docmd $SUDO removepkg $@
			return ;;
41 42 43 44 45
		*)
			fatal "Do not known command for $PMTYPE"
			;;
	esac
	return 1
46 47 48

}

49 50
epm_remove()
{
51 52 53 54 55 56 57 58 59 60 61
	[ -n "$pkg_filenames" ] || fatal "Run remove without args"
	epm_remove_low $pkg_filenames && return

	if [ -n "$non_interactive" ] ; then
		epm_remove_nonint $pkg_filenames
		local RET=$?
		# if not separate command, use usual command
		[ "$RET" = "5" ] || return $RET
	fi

	epm_remove_names $pkg_filenames
62 63 64 65 66
}

epm_remove_names()
{
	[ -z "$1" ] && return
Vitaly Lipatov's avatar
Vitaly Lipatov committed
67

68 69
	case $PMTYPE in
		apt-rpm|apt-dpkg)
Vitaly Lipatov's avatar
Vitaly Lipatov committed
70
			docmd $SUDO apt-get remove --purge $@
71 72 73 74
			return ;;
		urpm-rpm)
			docmd $SUDO urpme $@
			return ;;
Vitaly Lipatov's avatar
Vitaly Lipatov committed
75
		pkg_add) # without dependencies
76 77 78
			docmd $SUDO pkg_delete $@
			return ;;
		emerge)
79 80
			#docmd $SUDO emerge --unmerge $@
			docmd $SUDO emerge -aC $@
81 82
			return ;;
		pacman)
83
			docmd $SUDO pacman -R $@
84 85 86 87 88 89 90 91 92 93
			return ;;
		yum-rpm)
			docmd $SUDO yum remove $@
			return ;;
		zypper-rpm)
			docmd $SUDO zypper remove $@
			return ;;
		mpkg)
			docmd $SUDO mpkg remove $@
			return ;;
94
		slackpkg)
95
			docmd $SUDO slackpkg remove $@
96 97 98 99
			return ;;
		*)
			fatal "Do not known command for $PMTYPE"
			;;
Vitaly Lipatov's avatar
Vitaly Lipatov committed
100
	esac
101 102
}

103 104 105
# TODO
epm_remove_nonint()
{
106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121
	case $PMTYPE in
		apt-rpm|apt-dpkg)
			docmd $SUDO apt-get -y --force-yes remove --purge $@
			return ;;
		urpm-rpm)
			docmd $SUDO urpme --auto $@
			return ;;
		pacman)
			docmd $SUDO pacman -R --noconfirm $@
			return ;;
		yum-rpm)
			docmd $SUDO yum -y remove $@
			return ;;
		zypper-rpm)
			docmd $SUDO zypper --non-interactive remove $@
			return ;;
122 123 124
		slackpkg)
			docmd $SUDO slackpkg -batch=on -default_answer=yes remove $@
			return ;;
125 126 127 128 129
		*)
			fatal "Do not known command for $PMTYPE"
			;;
	esac
	return 5
130 131
}