update for t11, and fixes for find file
[distro-functions] / src / package-manager-abstractions
index dece84830169562a1217de1a7b71f019c7b866ba..0f4815a480587f58d3c3d18b731370c679d48b1d 100644 (file)
@@ -26,7 +26,7 @@ if command -v yum &> /dev/null; then
     $s yum -y install "$@"
   }
   # package find
-  pf() {
+  pfd() {
     local s; [[ $EUID != 0 ]] && s=sudo
     $s yum search "$@"
   }
@@ -100,7 +100,7 @@ elif command -v apt-get &>/dev/null; then
     limittime=$(( now - 60*60*2 ))
     for f in /etc/apt/sources.list /etc/apt/sources.list.d/*.list; do
       if [[ -r $f ]]; then
-        t=$(stat -c %Y $f )
+        t=$(stat  -c %Y $f )
         if (( t > limittime )); then
           limittime=$t
         fi
@@ -113,11 +113,15 @@ elif command -v apt-get &>/dev/null; then
   pi() {
     pcheck "$@" || return 0
     pupdate
-    local s; [[ $EUID != 0 ]] && s=sudo
     if [[ $- != *i* ]]; then
-      echo pi "$@"
+      echo pi "$*"
+    fi
+    if [[ $EUID == 0 ]]; then
+      DEBIAN_FRONTEND=noninteractive apt-get -y install --purge --auto-remove "$@"
+    else
+      sudo DEBIAN_FRONTEND=noninteractive apt-get -y install --purge --auto-remove "$@"
     fi
-    $s $PI_PREFIX apt-get -y install --purge --auto-remove "$@"
+
   }
 
   pi-nostart() {
@@ -125,24 +129,35 @@ elif command -v apt-get &>/dev/null; then
     pcheck "$@" || return 0
     plock-wait
     pupdate
-    local s; [[ $EUID != 0 ]] && s=sudo
     local f=/usr/sbin/policy-rc.d
-    $s dd of=$f 2>/dev/null <<EOF
+    if [[ $- != *i* ]]; then
+      echo pi-nostart "$@"
+    fi
+    if [[ $EUID == 0 ]]; then
+      dd of=$f 2>/dev/null <<EOF
 #!/bin/sh
 exit 101
 EOF
-    $s chmod +x $f
-    if [[ $- != *i* ]]; then
-      echo pi-nostart "$@"
+      chmod +x $f
+      DEBIAN_FRONTEND=noninteractive apt-get -y install --purge --auto-remove "$@" || ret=$?
+      rm $f
+    else
+      sudo dd of=$f 2>/dev/null <<EOF
+#!/bin/sh
+exit 101
+EOF
+      sudo chmod +x $f
+      sudo DEBIAN_FRONTEND=noninteractive apt-get -y install --purge --auto-remove "$@" || ret=$?
+      sudo rm $f
     fi
-    $s apt-get -y install --purge --auto-remove "$@" || ret=$?
-    $s rm $f
     return $ret
   }
-  pf() {
+  # package find description
+  pfd() {
     # package name and descriptions
     apt-cache search "$@"
   }
+  # package find file
   pff() {
     local s; [[ $EUID != 0 ]] && s=sudo
     # nice aptitude search from emacs shell. package description width as
@@ -174,9 +189,6 @@ EOF
     local s; [[ $EUID != 0 ]] && s=sudo
     $s apt-get -y dist-upgrade --purge --auto-remove "$@"
     $s apt-get -y autoremove
-    if [[ -e /usr/sbin/checkrestart ]]; then
-      $s /usr/sbin/checkrestart -p
-    fi
   }
   # package info
   pl() {
@@ -187,6 +199,15 @@ EOF
     fi
   }
   pfile() {
+    # -a = search all repos
+    local -a arg all
+    all=false
+    case $1 in
+      -a)
+        all=true
+        shift
+        ;;
+    esac
     local file=$1
     # ucfq can tell us about config files which are not tracked
     # with apt-file. but, for at least a few files I tested
@@ -197,11 +218,18 @@ EOF
     # if [[ $file == /* ]] && ! ucfq -w $file | grep ::: &>/dev/null; then
     #    ucfq $file
 
-    if [[ $file == */* ]]; then
-      apt-file find -x "$file"\$
+    if [[ $file == /* ]]; then
+      dpkg -S "$file"
     else
-      apt-file find -x /"$file"\$
-      update-alternatives --list "$file" 2>/dev/null
+      if ! $all; then
+        arg=(--filter-origins "$(positive-origins)")
+      fi
+      if [[ $file == /* ]]; then
+        apt-file "${arg[@]}" find -x /"$file"\$
+        update-alternatives --list "$file" 2>/dev/null
+      else
+        apt-file "${arg[@]}" find -x "$file"\$
+      fi
     fi
   }
   pkgfiles() {
@@ -219,7 +247,7 @@ elif command -v pacman &>/dev/null; then
   pi() {
     pacaur -S --noconfirm --needed --noedit "$@"
   }
-  pf() {
+  pfd() {
     pacaur -Ss "$@"
   }
   pu() {