Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(22)

Unified Diff: recipe_modules/git_cl/api.py

Issue 2087093002: Add upload and issue to git_cl recipe module (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | recipe_modules/git_cl/example.py » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: recipe_modules/git_cl/api.py
diff --git a/recipe_modules/git_cl/api.py b/recipe_modules/git_cl/api.py
index 8d2ad5c0d660600040b50f48ef25ca21420f4f0a..f9b1d0b89c1f48fe3d64b326f8253821b5e99408 100644
--- a/recipe_modules/git_cl/api.py
+++ b/recipe_modules/git_cl/api.py
@@ -4,6 +4,19 @@
from recipe_engine import recipe_api
+import string
+
+def clean_message(msg):
+ """Cleans a commit message to be able to be printed on the command line."""
+ i = 0
+ for i in range(len(msg)):
tandrii(chromium) 2016/06/22 14:41:15 1. Pythonic way: for i, c in enumerate(msg):
martiniss 2016/06/22 22:47:33 Great, thanks.
+ if not msg[i] in string.printable:
+ break
+ if i < len(msg) - 1:
+ msg = msg[:i]
+
+ return msg
+
class GitClApi(recipe_api.RecipeApi):
def __call__(self, subcmd, args, name=None, **kwargs):
if not name:
@@ -39,3 +52,21 @@ class GitClApi(recipe_api.RecipeApi):
'description', args, stdout=self.m.raw_io.output(),
stdin=self.m.raw_io.input(data=description),
name='git_cl set description', **kwargs)
+
+ def upload(self, message, upload_args=None, **kwargs):
+ upload_args = upload_args or []
+ # message can have unicode, which we can't pass on the command line, so
tandrii(chromium) 2016/06/22 14:41:15 why not pass it in a temp file, or stdin? Patching
martiniss 2016/06/22 22:47:33 I do that below, in the call to set description.
tandrii(chromium) 2016/06/23 11:23:50 oh, well, then why do you even need to clean the m
martiniss 2016/06/23 18:35:41 It sends out an email immediately, which has the s
martiniss 2016/06/23 18:44:15 Look at https://codereview.chromium.org/2098603002
+ # upload it separately. Get a one line message for the subject for now.
+ one_line_message = clean_message(message.split('\n')[0]) + "..."
tandrii(chromium) 2016/06/22 14:41:15 message.splitlines()[0]
martiniss 2016/06/22 22:47:34 Done.
+
+ upload_args.extend(['-m', one_line_message])
tandrii(chromium) 2016/06/23 11:23:50 s/one_line_message/"whatever"
+
+ result = self('upload', upload_args, **kwargs)
+
+ # Really set the description
+ self.set_description(message)
+ return result
+
+ def issue(self, **kwargs):
+ return self('issue', [], stdout=self.m.raw_io.output(), **kwargs)
+
« no previous file with comments | « no previous file | recipe_modules/git_cl/example.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698