Commit fffa7293 authored by Vitaly Lipatov's avatar Vitaly Lipatov

commit packed

parent 877249a8
...@@ -222,6 +222,40 @@ set_sudo() ...@@ -222,6 +222,40 @@ set_sudo()
SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'" SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'"
} }
assure_exists()
{
PATH=$PATH:/sbin:/usr/sbin which $1 2>/dev/null >/dev/null && return
echo "Install appropriate package for $1 command..."
case $1 in
equery|revdep-rebuild)
epm install gentoolkit
;;
apt-repo)
epm install apt-repo
;;
apt-file)
epm install apt-file
;;
update-kernel|remove-old-kernels)
epm install update-kernel
;;
*)
fatal "Internal error: Unknown binary $1 to check if exists"
;;
esac
}
get_package_type()
{
local i
for i in deb rpm ; do
[ "${1/.$i/}" != "$1" ] && echo $i && return
done
echo "$1"
return 0
}
get_help() get_help()
{ {
grep -v -- "^#" $0 | grep -- "# $1" | while read n ; do grep -v -- "^#" $0 | grep -- "# $1" | while read n ; do
...@@ -291,6 +325,9 @@ case $DISTRNAME in ...@@ -291,6 +325,9 @@ case $DISTRNAME in
OpenWRT) OpenWRT)
CMD="ipkg" CMD="ipkg"
;; ;;
GNU/Linux/Guix)
CMD="guix"
;;
*) *)
fatal "Have no suitable DISTRNAME $DISTRNAME" fatal "Have no suitable DISTRNAME $DISTRNAME"
;; ;;
...@@ -305,6 +342,7 @@ epm_addrepo() ...@@ -305,6 +342,7 @@ epm_addrepo()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo
sudocmd apt-repo add $pkg_filenames sudocmd apt-repo add $pkg_filenames
;; ;;
apt-dpkg) apt-dpkg)
...@@ -346,6 +384,7 @@ epm_autoremove() ...@@ -346,6 +384,7 @@ epm_autoremove()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists remove-old-kernels
# ALT Linux only # ALT Linux only
sudocmd remove-old-kernels sudocmd remove-old-kernels
;; ;;
...@@ -370,7 +409,7 @@ case $PMTYPE in ...@@ -370,7 +409,7 @@ case $PMTYPE in
;; ;;
emerge) emerge)
sudocmd emerge --depclean sudocmd emerge --depclean
docmd epm --skip-installed install gentoolkit assure_exists revdep-rebuild
sudocmd revdep-rebuild sudocmd revdep-rebuild
;; ;;
pacman) pacman)
...@@ -380,6 +419,9 @@ case $PMTYPE in ...@@ -380,6 +419,9 @@ case $PMTYPE in
# clean-system removes non official packages # clean-system removes non official packages
#sudocmd slackpkg clean-system #sudocmd slackpkg clean-system
;; ;;
guix)
sudocmd guix gc
;;
#zypper-rpm) #zypper-rpm)
# sudocmd zypper clean # sudocmd zypper clean
# ;; # ;;
...@@ -393,19 +435,27 @@ esac ...@@ -393,19 +435,27 @@ esac
# File bin/epm-changelog: # File bin/epm-changelog:
__epm_changelog_apt()
{
local i
for i in $@ ; do
docmd apt-cache show $i | grep -A 1000 "^Changelog:"
done
}
__epm_changelog_files() __epm_changelog_files()
{ {
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in # TODO: detect every file
apt-rpm|yum-rpm|zypper-rpm|urpm-rpm) case $(get_package_type $1) in
rpm)
docmd_foreach "rpm -p --changelog" $@ | less docmd_foreach "rpm -p --changelog" $@ | less
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $1"
;; ;;
esac esac
} }
__epm_changelog_local_names() __epm_changelog_local_names()
...@@ -417,12 +467,11 @@ __epm_changelog_local_names() ...@@ -417,12 +467,11 @@ __epm_changelog_local_names()
docmd_foreach "rpm --changelog" $@ | less docmd_foreach "rpm --changelog" $@ | less
;; ;;
apt-dpkg) apt-dpkg)
# FIXME: only first pkg
docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less
;; ;;
emerge) emerge)
docmd view /usr/portage/category/$1/ChangeLog | less assure_exists equery
# docmd equery changes -f $1 | less docmd equery changes -f $1 | less
;; ;;
pacman) pacman)
docmd pacman -Qc $1 | less docmd pacman -Qc $1 | less
...@@ -438,9 +487,9 @@ __epm_changelog_unlocal_names() ...@@ -438,9 +487,9 @@ __epm_changelog_unlocal_names()
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in case $PMTYPE in
#apt-rpm) apt-rpm)
# docmd_foreach "rpm --changelog" $@ | less __epm_changelog_apt $@ | less
# ;; ;;
#apt-dpkg) #apt-dpkg)
# # FIXME: only first pkg # # FIXME: only first pkg
# docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less # docmd zcat /usr/share/doc/$1/changelog.Debian.gz | less
...@@ -454,6 +503,10 @@ __epm_changelog_unlocal_names() ...@@ -454,6 +503,10 @@ __epm_changelog_unlocal_names()
#zypper-rpm) #zypper-rpm)
# sudocmd zypper clean # sudocmd zypper clean
# ;; # ;;
emerge)
assure_exists equery
docmd equery changes -f $1 | less
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -526,11 +579,10 @@ esac ...@@ -526,11 +579,10 @@ esac
check_pkg_integrity() check_pkg_integrity()
{ {
local EXT=`echo "$1" | sed -e "s|.*\.\([a-z0-9]*\)\$|\1|g"`
local PKG="$1" local PKG="$1"
local RET local RET
case $EXT in case $(get_package_type $PKG) in
rpm) rpm)
docmd rpm --checksig $PKG docmd rpm --checksig $PKG
;; ;;
...@@ -546,8 +598,10 @@ check_pkg_integrity() ...@@ -546,8 +598,10 @@ check_pkg_integrity()
;; ;;
*) *)
docmd erc test "$PKG" && return docmd erc test "$PKG" && return
which erc >/dev/null 2>/dev/null && fatal "Check failed" which erc >/dev/null 2>/dev/null && fatal "Check failed."
fatal "Install erc package." fatal "Install erc package for file package."
# TODO
epm install erc
;; ;;
esac esac
} }
...@@ -561,6 +615,10 @@ case $PMTYPE in ...@@ -561,6 +615,10 @@ case $PMTYPE in
*-dpkg) *-dpkg)
docmd debsums $@ docmd debsums $@
;; ;;
emerge)
assure_exists equery
docmd equery check $@
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -630,11 +688,12 @@ __epm_filelist_file() ...@@ -630,11 +688,12 @@ __epm_filelist_file()
[ -z "$*" ] && return [ -z "$*" ] && return
case $PMTYPE in # TODO: allow a new packages
apt-rpm|yum-rpm|urpm-rpm|zypper-rpm) case $(get_package_type $1) in
rpm)
CMD="rpm -qlp" CMD="rpm -qlp"
;; ;;
apt-dpkg) deb)
CMD="dpkg --contents" CMD="dpkg --contents"
;; ;;
*) *)
...@@ -675,6 +734,10 @@ __epm_filelist_name() ...@@ -675,6 +734,10 @@ __epm_filelist_name()
docmd pacman -Ql $pkg_names | sed -e "s|.* ||g" docmd pacman -Ql $pkg_names | sed -e "s|.* ||g"
return return
;; ;;
emerge)
assure_exists equery
CMD="equery files"
;;
slackpkg) slackpkg)
is_installed $pkg_names || fatal "Query filelist for non installed packages does not realized" is_installed $pkg_names || fatal "Query filelist for non installed packages does not realized"
docmd awk 'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}' /var/log/packages/${pkg_filenames}* docmd awk 'BEGIN{desk=1}{if(/^FILE LIST:$/){desk=0} else if (desk==0) {print}}' /var/log/packages/${pkg_filenames}*
...@@ -756,12 +819,22 @@ case $PMTYPE in ...@@ -756,12 +819,22 @@ case $PMTYPE in
is_installed $pkg_names && docmd conary query $pkg_names --info && return is_installed $pkg_names && docmd conary query $pkg_names --info && return
docmd conary repquery $pkg_names --info docmd conary repquery $pkg_names --info
;; ;;
emerge)
assure_exists equery
docmd equery meta $pkg_names
docmd equery which $pkg_names
docmd equery uses $pkg_names
docmd equery size $pkg_names
;;
slackpkg) slackpkg)
docmd /usr/sbin/slackpkg info $pkg_names docmd /usr/sbin/slackpkg info $pkg_names
;; ;;
ipkg) ipkg)
docmd ipkg info $pkg_names docmd ipkg info $pkg_names
;; ;;
homebrew)
docmd brew info $pkg_names
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -891,6 +964,9 @@ epm_install_names() ...@@ -891,6 +964,9 @@ epm_install_names()
nix) nix)
__separate_sudocmd "nix-env --install" "nix-env --upgrade" $@ __separate_sudocmd "nix-env --install" "nix-env --upgrade" $@
return ;; return ;;
guix)
__separate_sudocmd "guix package -i" "guix package -i" $@
return ;;
*) *)
fatal "Have no suitable install command for $PMTYPE" fatal "Have no suitable install command for $PMTYPE"
;; ;;
...@@ -902,6 +978,7 @@ epm_ni_install_names() ...@@ -902,6 +978,7 @@ epm_ni_install_names()
[ -z "$1" ] && return [ -z "$1" ] && return
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-rpm|apt-dpkg)
export DEBIAN_FRONTEND=noninteractive
sudocmd apt-get -y --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" $APTOPTIONS install $@ sudocmd apt-get -y --force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" $APTOPTIONS install $@
return ;; return ;;
yum-rpm) yum-rpm)
...@@ -1210,6 +1287,7 @@ epm_kernel_update() ...@@ -1210,6 +1287,7 @@ epm_kernel_update()
case $DISTRNAME in case $DISTRNAME in
ALTLinux) ALTLinux)
assure_exists update-kernel
sudocmd update-kernel sudocmd update-kernel
return ;; return ;;
esac esac
...@@ -1258,7 +1336,9 @@ case $PMTYPE in ...@@ -1258,7 +1336,9 @@ case $PMTYPE in
[ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames" [ -n "$short" ] && CMD="rpm -qa --queryformat %{name}\n $pkg_filenames"
;; ;;
emerge) emerge)
CMD="qlist -I" CMD="qlist -I -C"
# print with colors for console output
isatty && CMD="qlist -I"
;; ;;
pkgsrc) pkgsrc)
CMD="pkg_info" CMD="pkg_info"
...@@ -1288,11 +1368,14 @@ case $PMTYPE in ...@@ -1288,11 +1368,14 @@ case $PMTYPE in
fi fi
;; ;;
homebrew) homebrew)
CMD="brew $pkg_filenames" CMD="brew list $pkg_filenames"
;; ;;
ipkg) ipkg)
CMD="ipkg list" CMD="ipkg list"
;; ;;
guix)
CMD="guix package -I"
;;
*) *)
fatal "Have no suitable query command for $PMTYPE" fatal "Have no suitable query command for $PMTYPE"
;; ;;
...@@ -1318,28 +1401,40 @@ epm_programs() ...@@ -1318,28 +1401,40 @@ epm_programs()
# File bin/epm-provides: # File bin/epm-provides:
epm_provides() epm_provides_files()
{ {
local CMD [ -n "$pkg_files" ] || return
[ -n "$pkg_filenames" ] || fatal "Run query without names"
case $(get_package_type $pkg_files) in
rpm)
docmd "rpm -q --provides -p"
;;
deb)
# FIXME: will we provide ourself?
docmd dpkg -I $pkg_files | grep "^ *Provides:" | sed "s|^ *Provides:||g"
;;
*)
fatal "Have no suitable command for $PMTYPE"
;;
esac
}
case $PMTYPE in
*-rpm)
CMD="rpm -q --provides -p"
;;
*)
fatal "Have no suitable command for $PMTYPE"
;;
esac
[ -n "$pkg_files" ] && docmd $CMD $pkg_files epm_provides_names()
{
local CMD
[ -n "$pkg_names" ] || return
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
# FIXME: need fix for a few names case
# TODO: separate this function to two section
if is_installed $pkg_names ; then if is_installed $pkg_names ; then
CMD="rpm -q --provides" CMD="rpm -q --provides"
else else
CMD="apt-cache depends" EXTRA_SHOWDOCMD=' | grep "Provides:"'
docmd apt-cache show $pkg_names | grep "Provides:"
return
fi fi
;; ;;
urpm-rpm|zypper-rpm|yum-rpm) urpm-rpm|zypper-rpm|yum-rpm)
...@@ -1350,32 +1445,63 @@ case $PMTYPE in ...@@ -1350,32 +1445,63 @@ case $PMTYPE in
fi fi
;; ;;
emerge) emerge)
assure_exists equery
CMD="equery files" CMD="equery files"
;; ;;
apt-dpkg)
# FIXME: need fix for a few names case
if is_installed $pkg_names ; then
CMD="rpm -q --provides"
else
EXTRA_SHOWDOCMD=' | grep "Provides:"'
docmd apt-cache show $pkg_names | grep "Provides:"
return
fi
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
esac esac
[ -n "$pkg_names" ] && docmd $CMD $pkg_names docmd $CMD $pkg_names
}
epm_provides()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
epm_provides_files
epm_provides_names
} }
# File bin/epm-query: # File bin/epm-query:
_get_grep_exp()
{
local def="^$1$"
[ "$PMTYPE" != "emerge" ] && echo "$def" && return
# Gentoo hack: support for short package form
echo "$1" | grep -q "/" && echo "$def" && return
echo "/$1$"
}
_query_via_packages_list() _query_via_packages_list()
{ {
local res=0 local res=0
local grepexp
local firstpkg=$1 local firstpkg=$1
shift shift
grepexp=$(_get_grep_exp $firstpkg)
# separate first line for print out command # separate first line for print out command
short=1 pkg_filenames=$firstpkg epm_packages | grep -- "^$firstpkg$" || res=1 short=1 pkg_filenames=$firstpkg epm_packages | grep -- "$grepexp" || res=1
for pkg in "$@" ; do for pkg in "$@" ; do
short=1 pkg_filenames=$pkg epm_packages 2>/dev/null | grep -- "^$pkg$" || res=1 grepexp=$(_get_grep_exp $pkg)
short=1 pkg_filenames=$pkg epm_packages 2>/dev/null | grep -- "$grepexp" || res=1
done done
return $res return $res
...@@ -1416,7 +1542,7 @@ __epm_get_hilevel_name() ...@@ -1416,7 +1542,7 @@ __epm_get_hilevel_name()
for i in $@ ; do for i in $@ ; do
local pkg local pkg
# get short form in pkg # get short form in pkg
quiet=1 short=1 pkg=$(__epm_query_name $i) quiet=1 short=1 pkg=$(__epm_query_name $i) || continue # drop not installed packages
# if already short form, skipped # if already short form, skipped
[ "$pkg" = "$i" ] && echo "$i" && continue [ "$pkg" = "$i" ] && echo "$i" && continue
# try get long form or use short form # try get long form or use short form
...@@ -1470,7 +1596,7 @@ __epm_query_name() ...@@ -1470,7 +1596,7 @@ __epm_query_name()
conary) conary)
CMD="conary query" CMD="conary query"
;; ;;
brew) homebrew)
warning "fix query" warning "fix query"
return 1 return 1
;; ;;
...@@ -1486,8 +1612,9 @@ __epm_query_name() ...@@ -1486,8 +1612,9 @@ __epm_query_name()
is_installed() is_installed()
{ {
#pkg_filenames="$@" epm_query >/dev/null pkg_filenames="$@" pkg_names="$@" epm_query >/dev/null 2>/dev/null
epm installed $@ >/dev/null 2>/dev/null # broken way to recursive call here (overhead!)
#epm installed $@ >/dev/null 2>/dev/null
} }
separate_installed() separate_installed()
...@@ -1569,6 +1696,7 @@ __do_query() ...@@ -1569,6 +1696,7 @@ __do_query()
CMD="rpm -qf" CMD="rpm -qf"
;; ;;
emerge) emerge)
assure_exists equery
CMD="equery belongs" CMD="equery belongs"
;; ;;
pacman) pacman)
...@@ -1606,6 +1734,7 @@ __do_short_query() ...@@ -1606,6 +1734,7 @@ __do_short_query()
dpkg_print_name_version $(dpkg -S $1 | sed -e "s|:.*||" | grep -v "^diversion by") dpkg_print_name_version $(dpkg -S $1 | sed -e "s|:.*||" | grep -v "^diversion by")
return ;; return ;;
NOemerge) NOemerge)
assure_exists equery
CMD="equery belongs" CMD="equery belongs"
;; ;;
NOpacman) NOpacman)
...@@ -1758,6 +1887,12 @@ epm_release_upgrade() ...@@ -1758,6 +1887,12 @@ epm_release_upgrade()
conary) conary)
epm Upgrade epm Upgrade
;; ;;
emerge)
epm Upgrade
;;
guix)
sudocmd guix pull --verbose
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -1800,9 +1935,12 @@ epm_remove_names() ...@@ -1800,9 +1935,12 @@ epm_remove_names()
[ -z "$1" ] && return [ -z "$1" ] && return
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-dpkg)
sudocmd apt-get remove --purge $@ sudocmd apt-get remove --purge $@
return ;; return ;;
apt-rpm)
sudocmd apt-get remove $@
return ;;
deepsolver-rpm) deepsolver-rpm)
sudocmd ds-remove $@ sudocmd ds-remove $@
return ;; return ;;
...@@ -1840,6 +1978,9 @@ epm_remove_names() ...@@ -1840,6 +1978,9 @@ epm_remove_names()
nix) nix)
sudocmd nix-env --uninstall $@ sudocmd nix-env --uninstall $@
return ;; return ;;
guix)
sudocmd guix package -r $@
return ;;
chocolatey) chocolatey)
sudocmd chocolatey uninstall $@ sudocmd chocolatey uninstall $@
return ;; return ;;
...@@ -1861,9 +2002,12 @@ epm_remove_names() ...@@ -1861,9 +2002,12 @@ epm_remove_names()
epm_remove_nonint() epm_remove_nonint()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm|apt-dpkg) apt-dpkg)
sudocmd apt-get -y --force-yes remove --purge $@ sudocmd apt-get -y --force-yes remove --purge $@
return ;; return ;;
apt-rpm)
sudocmd apt-get -y --force-yes remove $@
return ;;
urpm-rpm) urpm-rpm)
sudocmd urpme --auto $@ sudocmd urpme --auto $@
return ;; return ;;
...@@ -1950,6 +2094,7 @@ epm_removerepo() ...@@ -1950,6 +2094,7 @@ epm_removerepo()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo
sudocmd apt-repo rm $pkg_filenames sudocmd apt-repo rm $pkg_filenames
;; ;;
apt-dpkg) apt-dpkg)
...@@ -2000,6 +2145,7 @@ epm_repolist() ...@@ -2000,6 +2145,7 @@ epm_repolist()
{ {
case $PMTYPE in case $PMTYPE in
apt-rpm) apt-rpm)
assure_exists apt-repo
docmd apt-repo list docmd apt-repo list
;; ;;
deepsolver-rpm) deepsolver-rpm)
...@@ -2022,6 +2168,7 @@ case $PMTYPE in ...@@ -2022,6 +2168,7 @@ case $PMTYPE in
docmd zypper sl -d docmd zypper sl -d
;; ;;
emerge) emerge)
docmd eselect profile list
docmd layman -L docmd layman -L
;; ;;
pacman) pacman)
...@@ -2039,31 +2186,44 @@ esac ...@@ -2039,31 +2186,44 @@ esac
# File bin/epm-requires: # File bin/epm-requires:
epm_requires()
epm_requires_files()
{ {
local CMD [ -n "$pkg_files" ] || return
[ -n "$pkg_filenames" ] || fatal "Run query without names"
case $PMTYPE in case $(get_package_type $pkg_files) in
apt-rpm|urpm-rpm|zypper-rpm|yum-rpm) rpm)
CMD="rpm -q --requires -p" docmd "rpm -q --requires -p"
;; ;;
apt-dpkg) deb)
# FIXME: need package base a= docmd dpkg -I $pkg_files | grep "^ *Depends:" | sed "s|^ *Depends:||g"
showcmd dpkg -s $pkg_files ;;
a= dpkg -s $pkg_names | grep "^Depends:" | sed "s|^Depends:||g" *)
# FIXME: we need execute package name section too fatal "Have no suitable command for $PMTYPE"
return ;;
;; esac
*) }
fatal "Have no suitable command for $PMTYPE"
;;
esac
[ -n "$pkg_files" ] && docmd $CMD $pkg_files epm_requires_names()
{
local CMD
[ -n "$pkg_names" ] || return
case $PMTYPE in case $PMTYPE in
apt-rpm|urpm-rpm|zypper-rpm) apt-rpm)
# FIXME: need fix for a few names case
# FIXME: too low level of requires name (libSOME.so)
if is_installed $pkg_names ; then
CMD="rpm -q --requires"
else
#EXTRA_SHOWDOCMD=' | grep "Depends:"'
#docmd apt-cache show $pkg_names | grep "Depends:"
#return
CMD="apt-cache depends"
fi
;;
urpm-rpm|zypper-rpm)
# FIXME: use hi level commands # FIXME: use hi level commands
CMD="rpm -q --requires" CMD="rpm -q --requires"
;; ;;
...@@ -2074,7 +2234,18 @@ case $PMTYPE in ...@@ -2074,7 +2234,18 @@ case $PMTYPE in
CMD="pactree" CMD="pactree"
;; ;;
apt-dpkg) apt-dpkg)
CMD="apt-cache depends" # FIXME: need fix for a few names case
if is_installed $pkg_names ; then
showcmd dpkg -s $pkg_names
a= dpkg -s $pkg_names | grep "^Depends:" | sed "s|^Depends:||g"
return
else
CMD="apt-cache depends"
fi
;;
emerge)
assure_exists equery
CMD="equery depgraph"
;; ;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
...@@ -2082,10 +2253,17 @@ case $PMTYPE in ...@@ -2082,10 +2253,17 @@ case $PMTYPE in
esac esac
[ -n "$pkg_names" ] && docmd $CMD $pkg_names docmd $CMD $pkg_names
} }
epm_requires()
{
[ -n "$pkg_filenames" ] || fatal "Run query without names"
epm_requires_files
epm_requires_names
}
# File bin/epm-search: # File bin/epm-search:
__epm_search_output() __epm_search_output()
...@@ -2141,6 +2319,9 @@ case $PMTYPE in ...@@ -2141,6 +2319,9 @@ case $PMTYPE in
homebrew) homebrew)
CMD="brew search" CMD="brew search"
;; ;;
guix)
CMD="guix package -A"
;;
*) *)
fatal "Have no suitable search command for $PMTYPE" fatal "Have no suitable search command for $PMTYPE"
;; ;;
...@@ -2169,6 +2350,7 @@ __epm_search_make_grep() ...@@ -2169,6 +2350,7 @@ __epm_search_make_grep()
# FIXME: The World has not idea how to do grep both string # FIXME: The World has not idea how to do grep both string
# http://stackoverflow.com/questions/10110051/grep-with-two-strings-logical-and-in-regex?rq=1 # http://stackoverflow.com/questions/10110051/grep-with-two-strings-logical-and-in-regex?rq=1
for i in $list ; do for i in $list ; do
# FIXME -n on MacOS?
echo -n " | egrep -i --color -- \"$i\"" echo -n " | egrep -i --color -- \"$i\""
done done
} }
...@@ -2216,6 +2398,7 @@ case $PMTYPE in ...@@ -2216,6 +2398,7 @@ case $PMTYPE in
local_content_search $pkg_filenames local_content_search $pkg_filenames
return ;; return ;;
apt-dpkg) apt-dpkg)
assure_exists apt-file
sudocmd apt-file update sudocmd apt-file update
docmd apt-file search $pkg_filenames docmd apt-file search $pkg_filenames
return ;; return ;;
...@@ -2476,7 +2659,9 @@ epm_upgrade() ...@@ -2476,7 +2659,9 @@ epm_upgrade()
CMD="chocolatey update all" CMD="chocolatey update all"
;; ;;
homebrew) homebrew)
CMD="brew upgrade" #CMD="brew upgrade"
sudocmd "brew upgrade `brew outdated`"
return
;; ;;
ipkg) ipkg)
CMD="ipkg upgrade" CMD="ipkg upgrade"
...@@ -2484,6 +2669,9 @@ epm_upgrade() ...@@ -2484,6 +2669,9 @@ epm_upgrade()
slackpkg) slackpkg)
CMD="/usr/sbin/slackpkg upgrade-all" CMD="/usr/sbin/slackpkg upgrade-all"
;; ;;
guix)
CMD="guix package -u"
;;
*) *)
fatal "Have no suitable command for $PMTYPE" fatal "Have no suitable command for $PMTYPE"
;; ;;
...@@ -2526,6 +2714,7 @@ case $PMTYPE in ...@@ -2526,6 +2714,7 @@ case $PMTYPE in
CMD="repoquery --whatrequires" CMD="repoquery --whatrequires"
;; ;;
emerge) emerge)
assure_exists equery
CMD="equery depends -a" CMD="equery depends -a"
;; ;;
*) *)
...@@ -2807,6 +2996,16 @@ elif [ `uname` = "SunOS" ] ; then ...@@ -2807,6 +2996,16 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_ID="SunOS" DISTRIB_ID="SunOS"
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
# fixme: can we detect by some file?
elif [ `uname` = "Darwin" ] ; then
DISTRIB_ID="MacOS"
DISTRIB_RELEASE=$(uname -r)
# fixme: move to up
elif [ `uname` = "Linux" ] && which guix 2>/dev/null >/dev/null ; then
DISTRIB_ID="GNU/Linux/Guix"
DISTRIB_RELEASE=$(uname -r)
# try use standart LSB info by default # try use standart LSB info by default
elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then
# use LSB # use LSB
...@@ -2885,7 +3084,7 @@ $(get_help HELPOPT) ...@@ -2885,7 +3084,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "EPM package manager version 1.4.1" echo "EPM package manager version 1.4.2"
echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)" echo "Running on $($DISTRVENDOR) ('$PMTYPE' package manager uses '$PKGFORMAT' package format)"
echo "Copyright (c) Etersoft 2012-2013" echo "Copyright (c) Etersoft 2012-2013"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
......
...@@ -220,6 +220,40 @@ set_sudo() ...@@ -220,6 +220,40 @@ set_sudo()
SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'" SUDO="fatal 'Can't find sudo. Please install sudo or run epm under root.'"
} }
assure_exists()
{
PATH=$PATH:/sbin:/usr/sbin which $1 2>/dev/null >/dev/null && return
echo "Install appropriate package for $1 command..."
case $1 in
equery|revdep-rebuild)
epm install gentoolkit
;;
apt-repo)
epm install apt-repo
;;
apt-file)
epm install apt-file
;;
update-kernel|remove-old-kernels)
epm install update-kernel
;;
*)
fatal "Internal error: Unknown binary $1 to check if exists"
;;
esac
}
get_package_type()
{
local i
for i in deb rpm ; do
[ "${1/.$i/}" != "$1" ] && echo $i && return
done
echo "$1"
return 0
}
get_help() get_help()
{ {
grep -v -- "^#" $0 | grep -- "# $1" | while read n ; do grep -v -- "^#" $0 | grep -- "# $1" | while read n ; do
...@@ -289,6 +323,9 @@ case $DISTRNAME in ...@@ -289,6 +323,9 @@ case $DISTRNAME in
OpenWRT) OpenWRT)
CMD="ipkg" CMD="ipkg"
;; ;;
GNU/Linux/Guix)
CMD="guix"
;;
*) *)
fatal "Have no suitable DISTRNAME $DISTRNAME" fatal "Have no suitable DISTRNAME $DISTRNAME"
;; ;;
...@@ -836,6 +873,16 @@ elif [ `uname` = "SunOS" ] ; then ...@@ -836,6 +873,16 @@ elif [ `uname` = "SunOS" ] ; then
DISTRIB_ID="SunOS" DISTRIB_ID="SunOS"
DISTRIB_RELEASE=$(uname -r) DISTRIB_RELEASE=$(uname -r)
# fixme: can we detect by some file?
elif [ `uname` = "Darwin" ] ; then
DISTRIB_ID="MacOS"
DISTRIB_RELEASE=$(uname -r)
# fixme: move to up
elif [ `uname` = "Linux" ] && which guix 2>/dev/null >/dev/null ; then
DISTRIB_ID="GNU/Linux/Guix"
DISTRIB_RELEASE=$(uname -r)
# try use standart LSB info by default # try use standart LSB info by default
elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then elif distro lsb-release && [ -n "$DISTRIB_RELEASE" ]; then
# use LSB # use LSB
...@@ -981,7 +1028,7 @@ $(get_help HELPOPT) ...@@ -981,7 +1028,7 @@ $(get_help HELPOPT)
print_version() print_version()
{ {
echo "Service manager version 1.4.1" echo "Service manager version 1.4.2"
echo "Running on $($DISTRVENDOR)" echo "Running on $($DISTRVENDOR)"
echo "Copyright (c) Etersoft 2012, 2013" echo "Copyright (c) Etersoft 2012, 2013"
echo "This program may be freely redistributed under the terms of the GNU AGPLv3." echo "This program may be freely redistributed under the terms of the GNU AGPLv3."
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment