my_activity: Add config file option to add additional gerrit instances
my_activity can definitely be useful outside of Chromium, and the
gerrit instances are sometimes private. This allows users to carry
an additional list of instances in a json file (and possibly
monorail projects, but that seems like likely to be useful).
Change-Id: Ic0fec3bd4f815200f27cc0a8530cfd88f4328269
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/tools/depot_tools/+/2925677
Commit-Queue: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-by: Dirk Pranke <dpranke@google.com>
diff --git a/my_activity.py b/my_activity.py
index 375f775..3fdd7cf 100755
--- a/my_activity.py
+++ b/my_activity.py
@@ -12,6 +12,18 @@
- my_activity.py -b 4/24/19 for stats since April 24th 2019.
- my_activity.py -b 4/24/19 -e 6/16/19 stats between April 24th and June 16th.
- my_activity.py -jd to output stats for the week to json with deltas data.
+
+To add additional gerrit instances, one can pass a JSON file as parameter:
+ - my_activity.py -F config.json
+{
+ "gerrit_instances": {
+ "team-internal-review.googlesource.com": {
+ "shorturl": "go/teamcl",
+ "short_url_protocol": "http"
+ },
+ "team-external-review.googlesource.com": {}
+ }
+}
"""
# These services typically only provide a created time and a last modified time
@@ -745,6 +757,10 @@
help='Skips listing own issues without changes when showing changes '
'grouped by referenced issue(s). See --changes-by-issue for more '
'details.')
+ parser.add_option(
+ '-F', '--config_file', metavar='<config_file>',
+ help='Configuration file in JSON format, used to add additional gerrit '
+ 'instances (see source code for an example).')
activity_types_group = optparse.OptionGroup(parser, 'Activity Types',
'By default, all activity will be looked up and '
@@ -900,6 +916,22 @@
logging.info('Searching for activity by %s', options.user)
logging.info('Using range %s to %s', options.begin, options.end)
+ if options.config_file:
+ with open(options.config_file) as f:
+ config = json.load(f)
+
+ for item, entries in config.items():
+ if item == 'gerrit_instances':
+ for repo, dic in entries.items():
+ # Use property name as URL
+ dic['url'] = repo
+ gerrit_instances.append(dic)
+ elif item == 'monorail_projects':
+ monorail_projects.append(entries)
+ else:
+ logging.error('Invalid entry in config file.')
+ return 1
+
my_activity = MyActivity(options)
my_activity.show_progress('Loading data')