#!/usr/bin/env python
# Copyright (C) 2014 Jurriaan Bremer.
# This file is part of VMCloak - http://www.vmcloak.org/.
# See the file 'docs/LICENSE.txt' for copying permission.

import argparse
import os

from vmcloak.deps import DependencyManager


def list_deps(dm):
    print '%-16s: %s' % ('dependency', 'description')
    print '-----------------------------'
    print
    for dep, info in sorted(dm.repo.items()):
        print '%-16s: %s' % (dep, info['description'])


actions = {
    'init': lambda dm: dm.init(),
    'update': lambda dm: dm.update(),
    'fetch': lambda dm, arg: dm.fetch(arg),
    'add': lambda dm: None,
    'list-deps': lambda dm: list_deps(dm),
}

action_args = {
    'fetch': 'dependency',
}


def main():
    parser = argparse.ArgumentParser()
    parser.add_argument('action', type=str, choices=actions.keys(), help='Action to perform.')
    parser.add_argument('argument', type=str, nargs='?', help='Arguments.')
    parser.add_argument('--deps-directory', type=str, help='Dependency directory.')
    parser.add_argument('--deps-repository', type=str, help='Dependency repository.')

    args = parser.parse_args()

    if args.action in action_args and args.argument is None:
        print '[-] Action %r requires an argument: %r.' % (
            args.action, action_args[args.action])
        exit(1)

    if args.deps_directory:
        deps_directory = args.deps_directory
    else:
        deps_directory = os.path.join(os.getenv('HOME'), '.vmcloak', 'deps')

    if args.deps_repository:
        deps_repository = args.deps_repository
    else:
        deps_repository = \
            'https://raw.githubusercontent.com/jbremer/vmcloak-deps/master/'

    dm = DependencyManager(deps_directory, deps_repository)

    if args.argument is None:
        actions[args.action](dm)
    else:
        actions[args.action](dm, args.argument)

if __name__ == '__main__':
    main()
