# Copyright 2018 The Chromium Authors # 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. """ DIR_METADATA = 'DIR_METADATA' README = 'README.chromium' PRESUBMIT = 'PRESUBMIT.py' PRESUBMIT_TEST = 'PRESUBMIT_test.py' OWNERS = 'OWNERS' def IsMetricsProtoPath(input_api, path): return input_api.os_path.dirname(path) == input_api.PresubmitLocalPath() def IsReadmeFile(input_api, path): return (input_api.os_path.basename(path) == README and IsMetricsProtoPath(input_api, path)) def IsImportedFile(input_api, path): return (not input_api.os_path.basename(path) in (PRESUBMIT, PRESUBMIT_TEST, OWNERS, DIR_METADATA) 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(IsImportedFile(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)