#!/usr/bin/python

# Copyright 2002 Gustavo Noronha Silva <kov@debian.org>
# Esse programa está licensiado sob a GPL, você pode usar
# modificar e distribuir esse software de acordo com o que
# dita a GNU General Public License

import sys
import os
from string import split

start_contents = []
end_contents = []
removed_packages = []

def get_installed_packs ():
    """
    Essa função roda o dpkg -l para descobrir quais os
    pacotes atualmente instalados
    """
    lista = []
    dpkgl = os.popen ("COLUMNS=200 /usr/bin/dpkg -l | grep ^ii")

    while 1:
        linha = dpkgl.readline ()
        pacote = split (linha)
        try:
            lista.append (pacote[1])
        except IndexError:
            break

    return lista
# end of get_installed_packs

def print_list (msg, filename, list):
    """
    Imprime uma lista em stdout e no arquivo
    indicado
    """
    if len (list) > 0:
        print msg
        f = open (filename, "w")
        for i in list:
            pacotes = split (i, "_")
            print pacotes[0]
            f.write (pacotes[0] + "\n")
        f.close ()

print "Obtendo pacotes atualmente instalados..."
start_contents = get_installed_packs ()

try:
    command = sys.argv[1]
except IndexError:
    print "Você deve especificar o commando que quer rodar!"
    print "Por exemplo: " + sys.argv[0] + " \'apt-get install gnome-panel\'"
    sys.exit (1)

print "Executando comando: " + command

os.system (command)

print "Obtendo pacotes atualmente instalados..."
end_contents = get_installed_packs ()

for i in start_contents:
    try:
        end_contents.remove (i)
    except ValueError:
        removed_packages.append (i)

print_list ("Pacotes novos:", "novos.txt", end_contents)
print_list ("Pacotes removidos:", "removidos.txt", removed_packages)
