#! /usr/bin/env python

import argparse

from commands import settings, upstream
from commands.utils import directories, parse_string


def main():

    parser = argparse.ArgumentParser(
        prog='git upstream',
        version='git-upstream 0.7.0',
        description=upstream.__doc__,
        epilog='for more detail, use: git help upstream'
    )

    include_remote_group = parser.add_mutually_exclusive_group()

    # -r|--include-remote
    include_remote_group.add_argument(
        '-r',
        '--include-remote',
        help='include the remote name',
        action='store_const',
        const=upstream.IncludeRemote.ALWAYS,
        dest='include_remote',
        default=settings.get(
            'git-upstream.include-remote',
            default=upstream.IncludeRemote.NEVER,
            as_type=parse_string.as_enum(upstream.IncludeRemote)
        )
    )

    # -R|--no-include-remote
    include_remote_group.add_argument(
        '-R',
        '--no-include-remote',
        help="don't include the remote name",
        action='store_const',
        const=upstream.IncludeRemote.NEVER,
        dest='include_remote'
    )

    # -b|--branch
    parser.add_argument(
        '-b',
        '--branch',
        help='branch to find upstream for'
    )

    args = parser.parse_args()
    directories.exit_if_not_git_repository()
    upstream_output = upstream.upstream(**vars(args))
    if upstream_output:
        print upstream_output


if __name__ == '__main__':
    main()
