def _parse_args():
    """Parse and return command line arguments."""
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=_CliFormatter)
    parser.add_argument('-v', '--verbose', action='store_true',
                        help='Enable verbose output.')

    fb_group = parser.add_argument_group('FogBugz arguments')
    fb_group.add_argument(
        '-u', '--url', help=(
            'URL for bugzscout requests to be sent. Should be something '
            'like .../scoutSubmit.asp.'))
    fb_group.add_argument(
        '--user', help='User to designate when submitting via bugzscout.')
    fb_group.add_argument(
        '--project', help='Fogbugz project to file cases under.')
    fb_group.add_argument(
        '--area', help='Fogbugz area to file cases under.')

    error_group = parser.add_argument_group('error arguments')
    error_group.add_argument('-e', '--extra',
                             help='Extra data to send with error.')
    error_group.add_argument('--default-message',
                             help='Set default message if case is new.')
    error_group.add_argument('description',
                             help=('Description of error. Will be matched '
                                   'against existing cases.'))

    parser.set_defaults(**_defaults())

    return parser.parse_args()
Parse and return command line arguments.