Index: git_cl.py |
diff --git a/git_cl.py b/git_cl.py |
index 3acfdbbdf5439b010bcfa42c242722820b24c036..c43b62106110ac5a351f6cf5bcbfcb557d04da02 100755 |
--- a/git_cl.py |
+++ b/git_cl.py |
@@ -3446,6 +3446,11 @@ def colorize_CMDstatus_doc(): |
CMDstatus.__doc__ = '\n'.join(colorize_line(l) for l in lines) |
+def write_json(path, contents): |
+ with open(path, 'w') as f: |
+ json.dump(contents, f) |
+ |
+ |
@subcommand.usage('[issue_number]') |
def CMDissue(parser, args): |
"""Sets or displays the current code review issue number. |
@@ -3456,6 +3461,7 @@ def CMDissue(parser, args): |
help='Lookup the branch(es) for the specified issues. If ' |
'no issues are specified, all branches with mapped ' |
'issues will be listed.') |
+ parser.add_option('--json', help='Path to JSON output file.') |
_add_codereview_select_options(parser) |
options, args = parser.parse_args(args) |
_process_codereview_select_options(parser, options) |
@@ -3471,11 +3477,15 @@ def CMDissue(parser, args): |
issue_branch_map.setdefault(cl.GetIssue(), []).append(branch) |
if not args: |
args = sorted(issue_branch_map.iterkeys()) |
+ result = {} |
for issue in args: |
if not issue: |
continue |
+ result[int(issue)] = issue_branch_map.get(int(issue)) |
print('Branch for issue number %s: %s' % ( |
issue, ', '.join(issue_branch_map.get(int(issue)) or ('None',)))) |
+ if options.json: |
+ write_json(options.json, result) |
else: |
cl = Changelist(codereview=options.forced_codereview) |
if len(args) > 0: |
@@ -3486,6 +3496,11 @@ def CMDissue(parser, args): |
'Maybe you want to run git cl status?') |
cl.SetIssue(issue) |
print('Issue number: %s (%s)' % (cl.GetIssue(), cl.GetIssueURL())) |
+ if options.json: |
+ write_json(options.json, { |
+ 'issue': cl.GetIssue(), |
+ 'issue_url': cl.GetIssueURL(), |
+ }) |
return 0 |