#! /bin/sh

PKG_LIST=/tmp/mix.sh.$$
MAX_PKG_TO_SHOW=10

apt-show-versions -b | grep -v 'not installed$' > $PKG_LIST

TOTAL_PKG=`cat $PKG_LIST | wc -l | sed "s/ //g"`
echo "$TOTAL_PKG installed packages..."

how_many () {
  PATTERN="$1"
  PKG_NAME="$2"
  SHOW_PKG="$3"
  PKG_NUM=`grep "$PATTERN" $PKG_LIST | wc -l | sed "s/ //g"`
  if [ $PKG_NUM != 0 ] ; then
    PKG_PERCENT=`echo "scale=1\n$PKG_NUM * 100 / $TOTAL_PKG" | bc | sed -e "s/^\./0./"`
    echo -n "$PKG_NUM $PKG_NAME ($PKG_PERCENT%)"
    if [ $PKG_NUM -le $MAX_PKG_TO_SHOW ] ; then
      SHOW_PKG=1
    fi
    if [ $SHOW_PKG = 1 ] ; then
      PACKAGES=`grep "$PATTERN" $PKG_LIST | awk '{print $1}' | cut -d "/" -f 1 | cut -d ":" -f 1 | xargs`
      echo " : $PACKAGES"
    else
      echo
    fi
    for PKG_VER in "security" "updates" "proposed" "backports" ; do
      PKG_NUM=`grep "$PATTERN-$PKG_VER" $PKG_LIST | wc -l | sed "s/ //g"`
        if [ $PKG_NUM != 0 ] ; then
          PKG_PERCENT=`echo "scale=1\n$PKG_NUM * 100 / $TOTAL_PKG" | bc | sed -e "s/^\./0./"`
          echo "  including $PKG_NUM $PKG_VER ($PKG_PERCENT%)"
        fi
    done
  fi
}

# Debian GNU/Linux
how_many "\/hamm" "from Debian 2 Hamm" 0
how_many "\/slink" "from Debian 2.1 Slink" 0
how_many "\/potato" "from Debian 2.2 Potato" 0
how_many "\/woody" "from Debian 3 Woody" 0
how_many "\/sarge" "from Debian 3.1 Sarge" 0
how_many "\/etch" "from Debian 4 Etch" 0
how_many "\/lenny" "from Debian 5 Lenny" 0
how_many "\/squeeze" "from Debian 6 Squeeze" 0
how_many "\/wheezy" "from Debian 7 Wheezy" 0
how_many "\/jessie" "from Debian 8 Jessie" 0
how_many "\/sid" "from Debian Sid" 0

how_many "\/oldstable" "from Debian Old Stable" 0
how_many "\/stable" "from Debian Stable" 0
how_many "\/testing" "from Debian Testing" 0
how_many "\/unstable" "from Debian Unstable" 0
how_many "\/experimental" "from Debian Experimental" 0

# Ubuntu Linux
how_many "\/warty" "from Ubuntu 4.10 Warty Warthog" 0
how_many "\/hoary" "from Ubuntu 5.04 Hoary Hedgehog" 0
how_many "\/breezy" "from Ubuntu 5.10 Breezy Badger" 0
how_many "\/dapper" "from Ubuntu 6.06 LTS Dapper Drake" 0
how_many "\/edgy" "from Ubuntu 6.10 Edgy Eft" 0
how_many "\/feisty" "from Ubuntu 7.04 Feisty Fawn" 0
how_many "\/gutsy" "from Ubuntu 7.10 Gutsy Gibbon" 0
how_many "\/hardy" "from Ubuntu 8.04 LTS Hardy Heron" 0
how_many "\/intrepid" "from Ubuntu 8.10 Intrepid Ibex" 0
how_many "\/jaunty" "from Ubuntu 9.04 Jaunty Jackalope" 0
how_many "\/karmic" "from Ubuntu 9.10 Karmic Koala" 0
how_many "\/lucid" "from Ubuntu 10.04 LTS Lucid Lynx" 0
how_many "\/maverick" "from Ubuntu 10.10 Maverick Meerkat" 0
how_many "\/natty" "from Ubuntu 11.04 Natty Narwhal" 0
how_many "\/oneiric" "from Ubuntu 11.10 Oneiric Ocelot" 0
how_many "\/precise" "from Ubuntu 12.04 LTS Precise Pangolin" 0
how_many "\/quantal" "from Ubuntu 12.10 Quantal Quetzal" 0
how_many "\/raring" "from Ubuntu 13.04 Raring Ringtail" 0
how_many "\/saucy" "from Ubuntu 13.10 Saucy Salamander" 0
how_many "\/trusty" "from Ubuntu 14.04 LTS Trusty Tahr" 0
how_many "\/utopic" "from Ubuntu 14.10 Utopic Unicorn" 0

# Linux Mint
how_many "\/debian" "from Linux Mint Debian Edition" 0
how_many "\/ada" "from Linux Mint 1 Ada" 0
how_many "\/barbara" "from Linux Mint 2 Barbara" 0
how_many "\/bea" "from Linux Mint 2.1 Bea" 0
how_many "\/bianca" "from Linux Mint 2.2 Bianca" 0
how_many "\/cassandra" "from Linux Mint 3 Cassandra" 0
how_many "\/celena" "from Linux Mint 3.1 Celena" 0
how_many "\/daryna" "from Linux Mint 4 Daryna" 0
how_many "\/elyssa" "from Linux Mint 5 Elyssa" 0
how_many "\/felicia" "from Linux Mint 6 Felicia" 0
how_many "\/gloria" "from Linux Mint 7 Gloria" 0
how_many "\/helena" "from Linux Mint 8 Helena" 0
how_many "\/isadora" "from Linux Mint 9 Isadora" 0
how_many "\/julia" "from Linux Mint 10 Julia" 0
how_many "\/katya" "from Linux Mint 11 Katya" 0
how_many "\/lisa" "from Linux Mint 12 Lisa" 0
how_many "\/maya" "from Linux Mint 13 LTS Maya" 0
how_many "\/nadia" "from Linux Mint 14 Nadia" 0
how_many "\/olivia" "from Linux Mint 15 Olivia" 0
how_many "\/petra" "from Linux Mint 16 Petra" 0
how_many "\/qiana" "from Linux Mint 17 LTS Qiana" 0
how_many "\/rebecca" "from Linux Mint 17.1 LTS Rebecca" 0

# Other
how_many "newer than version in archive" "newer than version in archive" 1
how_many "No available version" "with no available version" 1
how_many "unknown" "from unknown source" 1

rm $PKG_LIST

exit 0
