#!/usr/bin/python3
import copy
from distutils.version import LooseVersion
import sys

import apt

# List of "additional" packages to install
ADDTIONAL_PACKAGES = [
    'htop',
    'iotop',
    'vim',
    'openssh-server',
    'build-essential']

def main():
            
    # Create cache
    cache = apt.Cache()
    cache.open()
    
    in_packages = copy.copy(ADDTIONAL_PACKAGES)
    
    packages = set()
    package_deps = {}

    while True:
        try:
            # Grab next package 
            pkg_name = in_packages.pop()        
            print('Package: {:s}'.format(pkg_name))
                        
            # Add this package (with version) to the list of packages
            if pkg_name not in packages:
                packages.add(pkg_name)
            
            try:
                package_deps[pkg_name] = cache[pkg_name].versions[0].dependencies
            except KeyError:
                continue
                
            for pdep in package_deps[pkg_name]:
                dep_name = pdep[0].name
                print('\tDependency: {:s}'.format(dep_name))
                if dep_name not in packages:
                    packages.add(dep_name)
                    in_packages.insert(0, dep_name)
                    
        except IndexError:
            break

    print('\n\n')
    for package in packages:
        print(package)
    print('\n\n')
    
    
if __name__ == '__main__':
    sys.exit(main())
