# !/bin/sh
# apt-fast v0.02 by Matt Parnell http://www.mattparnell.com, this thing is fully open-source
# if you do anything cool with it, let me know so I can publish or host it for you

# This version modded by Allan Hoffmeister

# contact me at admin@mattparnell.com

# apt-fast v0.02 aria2c adaptation by Alan Hoffmeiter on 06/05/2010
# Featuring:
# - Persistent connection (your apt-fast will not end until Aria 2 could surelly get all files)
# - Parallel Downloads (download more packages at once!)

# Special thanks to Travis/travisn000 from the PCLinux Forums for making improvements that allow
# for more complex apt-get commands. See the thread: http://www.pclinuxos.com/forum/index.php/topic,66385.0.html

# Use this just like apt-get for faster package downloading. Make sure to have axel installed.

# If the user entered arguments contain upgrade, install, or dist-upgrade
if echo "$@" | grep -q "upgrade\|install\|dist-upgrade"; then
  echo "Working...";

  # Go into the directory apt-get normally puts downloaded packages
  cd /var/cache/apt/archives/;

  # Have apt-get print the information, including the URI's to the packages
  # Strip out the URI's, and download the packages with Axel for speediness
  # I found this regex elsewhere, showing how to manually strip package URI's you may need...thanks to whoever wrote it
  apt-get -y --print-uris $@ | egrep -o -e "(ht|f)tp://[^\']+" > /tmp/apt-fast.list; 
  aria2c -c -j5 --input-file=/tmp/apt-fast.list --connect-timeout=600 --timeout=600 -m0;

  # Perform the user's requested action via apt-get
  apt-get $@ -y;

  echo -e "\nDone! Verify that all packages were installed successfully. If errors are found, run apt-get clean as root and try again using apt-get directly.\n";

else
   apt-get $@;
fi

