#!/bin/sh # # Copyright (C) 2012 Etersoft # Copyright (C) 2012 Vitaly Lipatov <lav@etersoft.ru> # # 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 # (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 Affero General Public License for more details. # # 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/>. # __epm_packages_sort() { # FIXME: sort depends on --sort value case $PMTYPE in apt-rpm|yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm) # FIXME: space with quotes problems, use point instead docmd rpm -qa --queryformat "%{size}.%{name}-%{version}-%{release}\n" $pkg_filenames | sort -n ;; apt-dpkg) docmd dpkg-query -W --showformat="\${Size}.\${Package}-\${Version}\n" $pkg_filenames | sort -n ;; *) fatal "Sorted package list are not realized for $PMTYPE" ;; esac } epm_packages() { local CMD [ -n "$sort" ] && __epm_packages_sort && return case $PMTYPE in apt-rpm) CMD="rpm -qa $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" ;; *-dpkg) #CMD="dpkg -l $pkg_filenames" CMD="dpkg-query -W --showformat=\${Package}-\${Version}\n $pkg_filenames" [ -n "$short" ] && CMD="dpkg-query -W --showformat=\${Package}\n $pkg_filenames" ;; snappy) CMD="snappy info" ;; yum-rpm|urpm-rpm|zypper-rpm|dnf-rpm) CMD="rpm -qa $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" ;; emerge) CMD="qlist -I -C" # print with colors for console output isatty && CMD="qlist -I" ;; pkgsrc) CMD="pkg_info" docmd $CMD | sed -e "s| .*||g" return ;; pkgng) if [ -n "$pkg_filenames" ] ; then CMD="pkg info -E $pkg_filenames" else CMD="pkg info" fi if [ -n "$short" ] ; then docmd $CMD | sed -e "s| .*||g" | sed -e "s|-[0-9].*||g" else docmd $CMD | sed -e "s| .*||g" fi return ;; pacman) CMD="pacman -Qs $pkg_filenames" if [ -n "$short" ] ; then docmd $CMD | sed -e "s| .*||g" -e "s|.*/||g" | grep -v "^$" return fi ;; npackd) CMD="npackdcl list --status=installed" # TODO: use search if pkg_filenames is not empty ;; conary) CMD="conary query" ;; chocolatey) CMD="chocolatey list" ;; slackpkg) CMD="ls -1 /var/log/packages/" if [ -n "$short" ] ; then # FIXME: does not work for libjpeg-v8a # TODO: remove last 3 elements (if arch is second from the last?) # FIXME this hack docmd ls -1 /var/log/packages/ | sed -e "s|-[0-9].*||g" | sed -e "s|libjpeg-v8a.*|libjpeg|g" return fi ;; homebrew) CMD="brew list $pkg_filenames" ;; ipkg) CMD="ipkg list" ;; guix) CMD="guix package -I" ;; android) CMD="pm list packages" docmd $CMD | sed -e "s|^package:||g" return ;; *) fatal "Have no suitable query command for $PMTYPE" ;; esac docmd $CMD }