#! /usr/bin/python
import os
from xdg import BaseDirectory
from apt_venv import AptVenv, utils, VERSION
from argparse import ArgumentParser

def main():
    parser = ArgumentParser(prog='apt-venv')
    parser.add_argument('-D', '--debug', type=int, help='set debug level')
    parser.add_argument('-v', '--version', action='version', \
        version='%(prog)s ' + VERSION)

    parser.add_argument('-c', '--command',
        help="exec the given command instead of entry the interactive shell")
    parser.add_argument('-d', '--delete', action="store_true",
        default=False, help="delete venv for release")
    parser.add_argument('-l', '--list', action="store_true",
        help="list all venv installed in your system")
    parser.add_argument('-u', '--update', action="store_true",
        help="update the apt indexes")
    parser.add_argument('release', nargs='?',
        help="the debian/ubuntu release")

    args = parser.parse_args()

    if 'APT_VENV' in os.environ:
        print("You can't run apt-venv inside apt-venv session")
        exit(1)

    if args.debug:
        utils.DEBUG_LEVEL = args.debug

    if args.list:
        data_path = BaseDirectory.save_data_path('apt-venv')
        dirs = os.listdir(data_path)
        if len(dirs) > 0:
            print("Installed apt-venv:\n %s" % "\n ".join(dirs))
            exit(0)
        else:
            print("There is no apt-venv on your system")
            exit(1)

    try:
        venv = AptVenv(args.release)
        if args.delete:
            venv.delete()
        else:
            if not venv.exists():
                venv.create()
                print("Welcome to apt virtual environment for %s release." % \
                        venv.release)
                print("You may want run first \"apt-get update\"")
            if args.update:
                venv.update()
            else:
                venv.run(command=args.command)

    except ValueError as exception:
        print (str(exception))
        exit(1)

if __name__ == '__main__':
    main()
