| # Copyright 2018 The Chromium Authors. All rights reserved. |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| |
| """Presubmit script for metrics_proto. |
| |
| See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts |
| for more details on the presubmit API built into gcl. |
| """ |
| |
| README = 'README.chromium' |
| |
| |
| def IsMetricsProtoPath(input_api, path): |
| return input_api.os_path.dirname(path) == input_api.PresubmitLocalPath() |
| |
| |
| def IsReadmeFile(input_api, path): |
| return (input_api.basename(path) == README and |
| IsMetricsProtoPath(input_api, path)) |
| |
| |
| def CheckChange(input_api, output_api): |
| """Checks that all changes include a README update.""" |
| paths = [af.AbsoluteLocalPath() for af in input_api.AffectedFiles()] |
| if (any((IsMetricsProtoPath(input_api, p) for p in paths)) and |
| not any((IsReadmeFile(input_api, p) for p in paths))): |
| return [output_api.PresubmitError( |
| 'Modifies %s without updating %s. ' |
| 'Changes to these files should originate upstream.' % |
| (input_api.PresubmitLocalPath(), README))] |
| return [] |
| |
| |
| def CheckChangeOnUpload(input_api, output_api): |
| return CheckChange(input_api, output_api) |
| |
| |
| def CheckChangeOnCommit(input_api, output_api): |
| return CheckChange(input_api, output_api) |