gerrit: support new Trybot-Ready flag

Also add sanity check so we don't half-accept commands named:
	TrybotReady

BUG=chromium:211660
TEST=`gerrit trybotready 232941 1` sets the trybot-ready flag
TEST=`gerrit trybotready 232941 0` clears the trybot-ready flag

Change-Id: Ie526874312fb5d5288cab553ea87c754c31ed4cb
Reviewed-on: https://chromium-review.googlesource.com/233650
Reviewed-by: David James <davidjames@chromium.org>
Commit-Queue: Mike Frysinger <vapier@chromium.org>
Tested-by: Mike Frysinger <vapier@chromium.org>
diff --git a/scripts/gerrit.py b/scripts/gerrit.py
index b885a6a..1a35f74 100644
--- a/scripts/gerrit.py
+++ b/scripts/gerrit.py
@@ -271,6 +271,15 @@
 UserActReady.arg_min = 2
 
 
+def UserActTrybotready(opts, *args):
+  """Mark CL <n> [n ...] with trybot-ready status <0,1>"""
+  num = args[-1]
+  for arg in args[:-1]:
+    helper, cl = GetGerrit(opts, arg)
+    helper.SetReview(cl, labels={'Trybot-Ready': num}, dryrun=opts.dryrun)
+UserActTrybotready.arg_min = 2
+
+
 def UserActSubmit(opts, *args):
   """Submit CL <n> [n ...]"""
   for arg in args:
@@ -367,8 +376,12 @@
 Actions:"""
   indent = max([len(x) - len(act_pfx) for x in actions])
   for a in sorted(actions):
-    usage += '\n  %-*s: %s' % (indent, a[len(act_pfx):].lower(),
-                               globals()[a].__doc__)
+    cmd = a[len(act_pfx):]
+    # Sanity check for devs adding new commands.  Should be quick.
+    if cmd != cmd.lower().capitalize():
+      raise RuntimeError('callback "%s" is misnamed; should be "%s"' %
+                         (cmd, cmd.lower().capitalize()))
+    usage += '\n  %-*s: %s' % (indent, cmd.lower(), globals()[a].__doc__)
 
   parser = commandline.ArgumentParser(usage=usage)
   parser.add_argument('-i', '--internal', dest='gob', action='store_const',