#!/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

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),
    'fetch-all': lambda dm: dm.fetch_all(),
    '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.')

    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)

    dm = DependencyManager()

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

if __name__ == '__main__':
    main()
