Chromium Code Reviews| Index: PRESUBMIT.py |
| diff --git a/PRESUBMIT.py b/PRESUBMIT.py |
| index 61fa2d6f92472543ff424ca08e9e01f52c5ebeeb..bb2054b6890c6def1db270720a065678d5a7aba7 100644 |
| --- a/PRESUBMIT.py |
| +++ b/PRESUBMIT.py |
| @@ -12,6 +12,7 @@ for more details about the presubmit API built into gcl. |
| import fnmatch |
| import os |
| import re |
| +import subprocess |
| import sys |
| import traceback |
| @@ -32,6 +33,8 @@ PUBLIC_API_OWNERS = ( |
| AUTHORS_FILE_NAME = 'AUTHORS' |
| +DOCS_PREVIEW_URL = 'https://skia.org/?cl=' |
| + |
| def _CheckChangeHasEol(input_api, output_api, source_file_filter=None): |
| """Checks that files end with atleast one \n (LF).""" |
| @@ -239,6 +242,59 @@ def _CheckLGTMsForPublicAPI(input_api, output_api): |
| return results |
| +def PostUploadHook(cl, change, output_api): |
| + """git cl upload will call this hook after the issue is created/modified. |
| + |
| + This hook does the following: |
| + * Adds a link to preview docs changes if there are any docs changes in the CL. |
| + * Adds 'NOTRY=true' if the CL contains only docs changes. |
| + """ |
| + |
| + results = [] |
| + atleast_one_docs_change = False |
| + all_docs_changes = True |
| + for affected_file in change.AffectedFiles(): |
| + affected_file_path = affected_file.LocalPath() |
| + file_path, _ = os.path.splitext(affected_file_path) |
| + if 'site' == file_path.split(os.path.sep)[0]: |
| + atleast_one_docs_change = True |
| + else: |
| + all_docs_changes = False |
|
borenet
2015/02/26 17:38:56
Nit: you could short-cut here to avoid having to l
rmistry
2015/02/26 18:09:39
Done.
|
| + |
| + issue = cl.issue |
| + rietveld_obj = cl.RpcServer() |
| + if issue and rietveld_obj: |
| + original_description = rietveld_obj.get_description(issue) |
| + new_description = original_description |
| + |
| + # If the change includes only doc changes then add NOTRY=true in the |
| + # CL's description if it does not exist yet. |
| + if all_docs_changes and not re.search( |
| + r'^NOTRY=true$', original_description, re.M | re.I): |
| + new_description += '\nNOTRY=true' |
| + results.append( |
| + output_api.PresubmitNotifyResult( |
| + 'This change has only doc changes. Automatically added ' |
| + '\'NOTRY=true\' to the CL\'s description')) |
| + |
| + # If there is atleast one docs change then add preview link in the CL's |
| + # description if it does not already exist there. |
| + if atleast_one_docs_change and not re.search( |
| + r'^DOCS_PREVIEW=.*', original_description, re.M | re.I): |
| + # Automatically add a link to where the docs can be previewed. |
| + new_description += '\nDOCS_PREVIEW= %s%s' % (DOCS_PREVIEW_URL, issue) |
| + results.append( |
| + output_api.PresubmitNotifyResult( |
| + 'Automatically added a link to preview the docs changes to the ' |
| + 'CL\'s description')) |
| + |
| + # If the description has changed update it. |
| + if new_description != original_description: |
| + rietveld_obj.update_description(issue, new_description) |
| + |
| + return results |
| + |
| + |
| def CheckChangeOnCommit(input_api, output_api): |
| """Presubmit checks for the change on commit. |