#!/usr/bin/env python3

import sys
import argparse
import raven

from fatcat_tools import authenticated_api
from fatcat_tools.reviewers import DummyReviewBot

# Yep, a global. Gets DSN from `SENTRY_DSN` environment variable
sentry_client = raven.Client()


def run_dummy(args):
    reviewer = DummyReviewBot(args.api, poll_interval=args.poll_interval,
        verbose=args.verbose)
    if args.editgroup:
        annotation = reviewer.run_single(args.editgroup, args.annotate)
        print(annotation)
    elif args.continuous:
        reviewer.run()

def main():
    parser = argparse.ArgumentParser(
        formatter_class=argparse.ArgumentDefaultsHelpFormatter)
    parser.add_argument('--verbose',
        action='store_true',
        help="enable verbose output")
    parser.add_argument('--fatcat-api-url',
        default="http://localhost:9411/v0",
        help="fatcat API host/port to use")
    parser.add_argument('--poll-interval',
        help="how long to wait between polling (seconds)",
        default=10.0, type=float)
    subparsers = parser.add_subparsers()

    sub_dummy = subparsers.add_parser('dummy',
        help="example/demonstration review bot")
    sub_dummy.set_defaults(func=run_dummy)
    sub_dummy.add_argument("--continuous",
        action="store_true",
        help="run forever, polling for new reviewable editgroups")
    sub_dummy.add_argument("--editgroup",
        help="single editgroup ID to review")
    sub_dummy.add_argument("--annotate",
        action="store_true",
        help="for single editgroups, pushes result as annotation")

    args = parser.parse_args()
    if not args.__dict__.get("func"):
        print("tell me what to do!")
        sys.exit(-1)
    if (args.editgroup and args.continuous) or not (args.editgroup or args.continuous):
        print("need to run on a single editgroup, or continuous")
        sys.exit(-1)

    args.api = authenticated_api(args.fatcat_api_url)
    args.func(args)

if __name__ == '__main__':
    main()