43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
|
#!/usr/bin/env python
|
||
|
# Copyright 2017 Google Inc.
|
||
|
# Use of this source code is governed by a BSD-style license that can be
|
||
|
# found in the LICENSE file.
|
||
|
|
||
|
import httplib
|
||
|
import json
|
||
|
import re
|
||
|
import subprocess
|
||
|
import sys
|
||
|
|
||
|
def retrieve_changeid(commit_or_branch):
|
||
|
b = subprocess.check_output(['git', 'log', '-1', '--format=%B', commit_or_branch])
|
||
|
r = re.compile(r'^Change-Id: (.*)$')
|
||
|
for l in b.split('\n'):
|
||
|
m = r.match(l)
|
||
|
if m:
|
||
|
return m.group(1)
|
||
|
return None
|
||
|
|
||
|
def gerrit_change_id_to_number(cid):
|
||
|
conn = httplib.HTTPSConnection('skia-review.googlesource.com')
|
||
|
conn.request('GET', '/changes/?q=change:%s' % cid)
|
||
|
r = conn.getresponse()
|
||
|
assert(r.status == 200)
|
||
|
x = r.read()
|
||
|
i = 0
|
||
|
while i < len(x) and x[i] != '[':
|
||
|
i += 1
|
||
|
print json.loads(x[i:])[0]['_number']
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
try:
|
||
|
if len(sys.argv) == 2 and len(sys.argv[1]) == 41 and sys.argv[1][0] == 'I':
|
||
|
gerrit_change_id_to_number(sys.argv[1])
|
||
|
else:
|
||
|
changeid = retrieve_changeid(sys.argv[1] if len(sys.argv) == 2 else 'HEAD')
|
||
|
if changeid is None:
|
||
|
exit(2)
|
||
|
gerrit_change_id_to_number(changeid)
|
||
|
except:
|
||
|
exit(1)
|