From 65393b4bb10de841edbe2026dba29b73625b33d7 Mon Sep 17 00:00:00 2001
From: Daniel Bolton <dbb@9y.com>
Date: Sun, 7 Aug 2011 16:51:14 -0400
Subject: [PATCH] Extend root ops, switch apt-copy to plain zsh

---
 plugins/debian/debian.plugin.zsh | 92 ++++++++++++++++++++++----------
 1 file changed, 65 insertions(+), 27 deletions(-)

diff --git a/plugins/debian/debian.plugin.zsh b/plugins/debian/debian.plugin.zsh
index 1df91dc4a..23cb98f93 100644
--- a/plugins/debian/debian.plugin.zsh
+++ b/plugins/debian/debian.plugin.zsh
@@ -4,8 +4,13 @@
 #
 # Debian-related zsh aliases and functions for zsh
 
-# Set to 'apt-get' or 'aptitude'
-apt_pref='aptitude'
+# Use aptitude if installed, or apt-get if not.
+# You can just set apt_pref='apt-get' to override it.
+if [[ -e $( which aptitude ) ]]; then
+    apt_pref='aptitude'
+else
+    apt_pref='apt-get'
+fi
 
 # Use sudo by default if it's installed
 if [[ -e $( which sudo ) ]]; then
@@ -13,6 +18,10 @@ if [[ -e $( which sudo ) ]]; then
 fi
 
 # Aliases ###################################################################
+# These are for more obscure uses of apt-get and aptitude that aren't covered
+# below.
+alias ag='apt-get'
+alias at='aptitude'
 
 # Some self-explanatory aliases
 alias acs="apt-cache search"
@@ -28,19 +37,23 @@ alias afs='apt-file search --regexp'
 alias asrc='apt-get source'
 alias ap='apt-cache policy'
 
-# superuser operations ################
+# superuser operations ######################################################
 if [[ $use_sudo -eq 1 ]]; then
-    alias ai="sudo $apt_pref install"
+# commands using sudo #######
+    alias aac="sudo $apt_pref autoclean"
+    alias abd="sudo $apt_pref build-dep"
+    alias ac="sudo $apt_pref clean"
     alias ad="sudo $apt_pref update"
+    alias adg="sudo $apt_pref update && sudo $apt_pref upgrade"
+    alias adu="sudo $apt_pref update && sudo $apt_pref dist-upgrade"
     alias afu='sudo apt-file update'
     alias ag="sudo $apt_pref upgrade"
-    alias adg="sudo $apt_pref update && sudo $apt_pref upgrade"
+    alias ai="sudo $apt_pref install"
     alias ap="sudo $apt_pref purge"
     alias ar="sudo $apt_pref remove"
 
-    if [[ $apt_pref -eq 'apt-get' ]]; then
-        alias ads="sudo $apt_pref dselect-upgrade"
-    fi
+    # apt-get only
+    alias ads="sudo $apt_pref dselect-upgrade"
     
     # Install all .deb files in the current directory.
     # Warning: you will need to put the glob in single quotes if you use:
@@ -48,25 +61,54 @@ if [[ $use_sudo -eq 1 ]]; then
     alias di='sudo dpkg -i ./*.deb'
 
     # Remove ALL kernel images and headers EXCEPT the one in use
-    alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'
+    alias kclean='sudo aptitude remove -P ?and(~i~nlinux-(ima|hea) \
+        ?not(~n`uname -r`))'
+
+
+# commands using su #########
 else
-    alias ai='apin' 
+    alias aac='su -ls "'"$apt_pref"' autoclean" root'
+    abd() {
+        cmd="su -lc '$apt_pref build-dep $@' root"
+        print "$cmd"
+        eval "$cmd"
+    }
+    alias ac='su -ls "'"$apt_pref"' clean" root'
     alias ad='su -lc "'"$apt_pref"' update" root'
+    alias adg='su -lc "'"$apt_pref"' update && aptitude safe-upgrade" root'
+    alias adu='su -lc "'"$apt_pref"' update && aptitude dist-upgrade" root'
     alias afu='su -lc "apt-file update"'
     alias ag='su -lc "'"$apt_pref"' safe-upgrade" root'
-    alias adg='su -lc "'"$apt_pref"' update && aptitude safe-upgrade" root'
+    ai() {
+        cmd="su -lc 'aptitude -P install $@' root"
+        print "$cmd"
+        eval "$cmd"
+    }
+    ap() {
+        cmd="su -lc '$apt_pref -P purge $@' root"
+        print "$cmd"
+        eval "$cmd"
+    }
+    ar() {
+        cmd="su -lc '$apt_pref -P remove $@' root"
+        print "$cmd"
+        eval "$cmd"
+    }
+
+    # Install all .deb files in the current directory
+    # Assumes glob_subst is off
     alias di='su -lc "dpkg -i ./*.deb" root'
+
     # Remove ALL kernel images and headers EXCEPT the one in use
-    alias kclean='su -lc '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) ?not(~n`uname -r`))'\'' root'
+    alias kclean='su -lc '\''aptitude remove -P ?and(~i~nlinux-(ima|hea) \
+        ?not(~n`uname -r`))'\'' root'
 fi
-# end superuser operations ##########
 
 
+# Misc. #####################################################################
 # print all installed packages
 alias allpkgs='aptitude search -F "%p" --disable-columns ~i'
 
-
-
 # Create a basic .deb package
 alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc'
 
@@ -75,23 +117,19 @@ alias mydeb='time dpkg-buildpackage -rfakeroot -us -uc'
 
 
 # Functions #################################################################
-
-# install packages without sudo
-apin() {
-    cmd="su -lc 'aptitude -P install $@' root"
-    print "$cmd"
-    eval "$cmd"
-}
-
 # create a simple script that can be used to 'duplicate' a system
 apt-copy() {
-	print '#!/bin/sh'"\n" > apt-copy.sh
+    print '#!/bin/sh'"\n" > apt-copy.sh
 
-	list=$(perl -m'AptPkg::Cache' -e '$c=AptPkg::Cache->new; for (keys %$c){ push @a, $_ if $c->{$_}->{'CurrentState'} eq 'Installed';} print "$_ " for sort @a;')
+    cmd="$apt_pref install -s "
 
-	print 'aptitude install '"$list\n" >> apt-copy.sh
+    for p in ${(f)"$(aptitude search -F "%p" --disable-columns \~i)"}; {
+        cmd="${cmd} ${p}"
+    }
 
-	chmod +x apt-copy.sh
+    print $cmd "\n" >> apt-copy.sh
+
+    chmod +x apt-copy.sh
 }