epm-info 3.69 KB
Newer Older
1 2
#!/bin/sh
#
3 4
# Copyright (C) 2012, 2014, 2016, 2019  Etersoft
# Copyright (C) 2012, 2014, 2016, 2019  Vitaly Lipatov <lav@etersoft.ru>
5
#
6 7 8
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
9 10 11 12 13
# (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
14
# GNU Affero General Public License for more details.
15
#
16 17
# You should have received a copy of the GNU Affero General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
18 19
#

20 21
load_helper epm-query

22 23 24 25 26 27
__epm_info_rpm_low()
{
	if [ -n "$pkg_files" ] ; then
		docmd rpm -qip $pkg_files
	fi
	[ -z "$pkg_names" ] && return
28
	is_installed $pkg_names && docmd rpm -qi $pkg_names && return
29 30
}

31
__epm_info_by_pkgtype()
32
{
33
	[ -n "$pkg_files" ] || return 1
Vitaly Lipatov's avatar
Vitaly Lipatov committed
34

35 36 37 38 39 40 41 42 43 44 45 46
	case $(get_package_type $pkg_files) in
		rpm)
			__epm_info_rpm_low && return
			;;
		deb)
			docmd dpkg -I $pkg_files
			;;
		*)
			return 1
			;;
	esac
}
Vitaly Lipatov's avatar
Vitaly Lipatov committed
47

48 49
__epm_info_by_pmtype()
{
50
case $PMTYPE in
51
	apt-dpkg)
52 53 54
		if [ -n "$pkg_files" ] ; then
			docmd dpkg -I $pkg_files
		fi
55
		[ -z "$pkg_names" ] && return
56
		is_installed $pkg_names && docmd dpkg -p $pkg_names && return
57
		docmd apt-cache show $pkg_names
58
		;;
Vitaly Lipatov's avatar
Vitaly Lipatov committed
59 60 61 62 63 64 65
	aptitude-dpkg)
		if [ -n "$pkg_files" ] ; then
			docmd dpkg -I $pkg_files
		fi
		[ -z "$pkg_names" ] && return
		docmd aptitude show $pkg_names
		;;
66
	*-rpm)
67
		__epm_info_rpm_low && return
68 69 70 71
		case $PMTYPE in
			apt-rpm)
				docmd apt-cache show $pkg_names
				;;
72
			packagekit)
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
				docmd pkcon get-details $pkg_names
				;;
			yum-rpm)
				docmd yum info $pkg_names
				;;
			urpmi-rpm)
				docmd urpmq -i $pkg_names
				;;
			dnf-rpm)
				docmd dnf info $pkg_names
				;;
			zypper-rpm)
				docmd zypper info $pkg_names
				;;
			*)
				warning "Unknown command for $PMTYPE"
				;;
		esac
91
		;;
92
	packagekit)
93 94
		# TODO: get-details-local
		docmd pkcon get-details $pkg_names
95 96
		;;
	pacman)
97
		is_installed $pkg_names && docmd pacman -Qi $pkg_names && return
98
		docmd pacman -Si $pkg_names
99
		;;
100 101 102 103
	aura)
		is_installed $pkg_names && docmd pacman -Qi $pkg_names && return
		docmd aura -Ai $pkg_names
		;;
104 105 106 107
	npackd)
		# FIXME: --version=
		docmd npackdcl info --package=$pkg_names
		;;
108 109 110 111
	conary)
		is_installed $pkg_names && docmd conary query $pkg_names --info && return
		docmd conary repquery $pkg_names --info
		;;
112 113 114 115 116 117 118
	emerge)
		assure_exists equery
		docmd equery meta $pkg_names
		docmd equery which $pkg_names
		docmd equery uses $pkg_names
		docmd equery size $pkg_names
		;;
119
	slackpkg)
120
		docmd /usr/sbin/slackpkg info $pkg_names
121
		;;
122 123
	opkg)
		docmd opkg info $pkg_names
124
		;;
125 126 127
	pkgng)
		docmd pkg info $pkg_names
		;;
128 129 130
	xbps)
		docmd xbps-query --show $pkg_names
		;;
Vitaly Lipatov's avatar
Vitaly Lipatov committed
131 132 133
	homebrew)
		docmd brew info $pkg_names
		;;
134 135 136
	aptcyg)
		docmd apt-cyg show $pkg_names
		;;
137 138 139 140 141 142
	winget)
		docmd winget show $pkg_names
		;;
	appget)
		docmd appget view $pkg_names
		;;
143
	*)
144
		fatal "Have no suitable command for $PMTYPE"
145 146
		;;
esac
147 148 149 150 151 152 153 154 155 156 157 158 159 160
}


# TODO: separate to _files and _names parts
# implement _files part per package, not by PMTYPE (see filelist)
epm_info()
{

# if possible, it will put pkg_urls into pkg_files or pkg_names
if [ -n "$pkg_urls" ] ; then
    load_helper epm-download
    __handle_pkg_urls_to_checking
fi

Vitaly Lipatov's avatar
Vitaly Lipatov committed
161
[ -n "$pkg_filenames" ] || fatal "Info: package name is missed"
162 163

__epm_info_by_pkgtype || __epm_info_by_pmtype
164

165 166 167 168
local RETVAL=$?

# TODO: reinvent
[ -n "$to_remove_pkg_files" ] && rm -fv $to_remove_pkg_files
169
[ -n "$to_remove_pkg_files" ] && rmdir -v $(dirname $to_remove_pkg_files | head -n1) 2>/dev/null
170 171

return $RETVAL
172
}