summaryrefslogtreecommitdiffstats
path: root/eselect/package-manager.bash.in
diff options
context:
space:
mode:
authorLukc <lukc@upyum.com>2010-09-04 13:13:38 +0000
committerLukc <lukc@upyum.com>2010-09-04 13:13:38 +0000
commitca71cdb4c439667278d80cc2abb4d19862fb018a (patch)
tree6a70a60b0e28b3a69e9d610f2248256069664420 /eselect/package-manager.bash.in
parente3d902049d484108028fcfaae97d77ed52b29891 (diff)
downloadports-ca71cdb4c439667278d80cc2abb4d19862fb018a.tar.gz
ports-ca71cdb4c439667278d80cc2abb4d19862fb018a.tar.bz2
ports-ca71cdb4c439667278d80cc2abb4d19862fb018a.tar.xz
ports-ca71cdb4c439667278d80cc2abb4d19862fb018a.zip
Eselect port added.
Diffstat (limited to 'eselect/package-manager.bash.in')
-rw-r--r--eselect/package-manager.bash.in143
1 files changed, 143 insertions, 0 deletions
diff --git a/eselect/package-manager.bash.in b/eselect/package-manager.bash.in
new file mode 100644
index 0000000..4830fb4
--- /dev/null
+++ b/eselect/package-manager.bash.in
@@ -0,0 +1,143 @@
+# vim: syntax=sh
+#
+# Copyright © 2010 Luka Vandervelden
+# Some rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions
+# are met:
+# 1. Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer
+# in this position and unchanged.
+# 2. Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+#
+# THIS SOFTWARE IS PROVIDED BY THE AUTHOR(S) ``AS IS'' AND ANY EXPRESS OR
+# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
+# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+# IN NO EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY DIRECT, INDIRECT,
+# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
+# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
+# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+# package_manager
+# It is less or more private. Scripts can use it, but that's not to them to
+#+ check such things. They should use the next functions instead.
+# Returns the package manager to use… \o/
+package_manager() {
+ local pm
+ : ${PACKAGE_MANAGER:="prt-get"}
+ case "${PACKAGE_MANAGER}" in
+ "prt-get")
+ if [[ -n "`type -p prt-get`" ]]; then
+ pm="prt-get"
+ fi
+ ;;
+ "pkg-get")
+ if [[ -n "`type -p pkg-get`" ]]; then
+ pm="pkg-get"
+ fi
+ pkgutils)
+ pm=pkgutils;;
+ esac
+ echo "${pm}"
+}
+
+# arch
+# Returns the arch on which we are.
+arch() {
+ arch=$(uname -m)
+ case ${arch} in
+ alpha|ia64|m68k|ppc|ppc64) ;;
+ arm*) arch=arm ;;
+ i?86) arch=x86 ;;
+ mips*) arch=mips ;;
+ parisc*) arch=hppa ;;
+ "Power Macintosh") arch=ppc ;;
+ s390*) arch=s390 ;;
+ sh*) arch=sh ;;
+ sparc*) arch=sparc ;;
+ x86_64) arch=x86_64 ;;
+ *) write_warning_msg \
+ "Unknown architecture. Please submit a bug report including the output: `uname -m`."
+ return 1
+ ;;
+ esac
+ echo ${ret}
+}
+
+isinst() {
+ [[ $# -eq 1 ]] || die "isinst() expects exactly one parameter."
+
+ local pm="`package_manager`"
+
+ case $pm in
+ prt-get|pkg-get)
+ $pm isinst $1 &>/dev/null
+ return $?
+ ;;
+ pkgutils)
+ grep -q "$1#" /var/lib/pkg/db &> /dev/null
+ return $?
+ ;;
+ *)
+ return 1
+ ;;
+ esac
+}
+
+# Give the version of a package. :)
+version() {
+ [[ $# -eq 1 ]] || die "best_version() expects exactly one parameter."
+
+ local pm="`package_manager`"
+ case $pm in
+ prt-get|pkg-get)
+ $pm info $1 | grep "Version:" | sed "s|Version: *||" 2>/dev/null
+ return $?
+ ;;
+ *)
+ # prt-get or pkg-get are needed to get the version of a package…
+ return 1
+ ;;
+ esac
+}
+
+get_repositories() {
+ local pm="`package_manager`"
+
+ case $pm in
+ prt-get)
+ grep prtdir /etc/prt-get.conf | sed "s|prtdir ||" 2>/dev/null
+ return $?
+ ;;
+ pkg-get)
+ ## FIXME: I don't use this thing. If somebody can help me… O:)
+ return 0
+ ;;
+ pkgutils)
+ return 1
+ ;;
+ esac
+}
+
+depinst() {
+ local pm="`package_manager`"
+
+ case $pm in
+ prt-get)
+ prt-get depinst $@
+ ;;
+ pkg-get)
+ pkg-get depinst $@
+ ;;
+ pkgutils)
+ return 1 ## TODO: Install a package if present in a “usual” place.
+ ;;
+ esac
+}
+