#!/usr/bin/python
"""Program to clean /var/cache/apt/archives folder from files for packages
which are not installed. It doesn't take any arguments.
USE AT YOUR OWN RISK, THIS MAY HURT YOU!!!"""
# $Id: midclean.py,v 1.4 2005-11-23 22:12:11 matej Exp $
import os,re,sys
try:
    testSet=set([1,2])
except NameError:
    from sets import Set as set
else:
    del testSet

root = os.getuid()==0
workDir = "/var/cache/apt/archives/"

currentlyInstalledRaw = os.popen("aptitude search -F '%p %V' '~i'",
    "r").readlines()
currentlyInstalled = set(["%s_%s" % tuple(line.split()) \
    for line in currentlyInstalledRaw])

os.chdir(workDir)
packagesStored = dict([["_".join(line.split("_",2)[:2]),line] \
    for line in os.listdir(workDir) if line[-4:] == ".deb"])
storedNotInstalled = set(packagesStored.keys()) - currentlyInstalled
for item in storedNotInstalled:
    filename = packagesStored[item]
    print "Removing %s." % filename
    if root:
        os.remove(filename)
if root:
    print >>sys.stderr,"Removed %d files." % len(storedNotInstalled)
else:
    print >>sys.stderr,"Only root can actually remove the files."