summaryrefslogtreecommitdiffstats
path: root/python/fatcat_review.py
diff options
context:
space:
mode:
authorBryan Newbold <bnewbold@robocracy.org>2019-04-09 13:12:07 -0700
committerBryan Newbold <bnewbold@robocracy.org>2019-04-09 13:12:07 -0700
commitac4d748d8ba930a1961c7353a6eebeb1f8f724cd (patch)
tree52397ffb1bf08aceb63ba0f95eb196c502e0e141 /python/fatcat_review.py
parente8980c114174339327b763a6e31f80d49e9eaaef (diff)
parentd89787882aaf4b7342768ac56d2252f3fcb7a7ad (diff)
downloadfatcat-ac4d748d8ba930a1961c7353a6eebeb1f8f724cd.tar.gz
fatcat-ac4d748d8ba930a1961c7353a6eebeb1f8f724cd.zip
Merge branch 'bnewbold-review-bots'
Diffstat (limited to 'python/fatcat_review.py')
-rwxr-xr-xpython/fatcat_review.py60
1 files changed, 60 insertions, 0 deletions
diff --git a/python/fatcat_review.py b/python/fatcat_review.py
new file mode 100755
index 00000000..40bc7041
--- /dev/null
+++ b/python/fatcat_review.py
@@ -0,0 +1,60 @@
+#!/usr/bin/env python3
+
+import sys
+import argparse
+import datetime
+import raven
+
+from fatcat_tools import authenticated_api
+from fatcat_tools.reviewers import DummyReviewBot, ReviewBot
+
+# 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.debug)
+ if args.editgroup:
+ annotation = reviewer.run_single(args.editgroup, args.annotate)
+ print(annotation)
+ elif args.continuous:
+ reviewer.run()
+
+def main():
+ parser = argparse.ArgumentParser()
+ parser.add_argument('--debug',
+ action='store_true',
+ help="enable debug logging")
+ parser.add_argument('--api-host-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')
+ 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.api_host_url)
+ args.func(args)
+
+if __name__ == '__main__':
+ main()