| Index: third_party/polymer/PRESUBMIT.py
|
| diff --git a/third_party/polymer/PRESUBMIT.py b/third_party/polymer/PRESUBMIT.py
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..04f37bdf0f21971ef05b953d117726a4d128f739
|
| --- /dev/null
|
| +++ b/third_party/polymer/PRESUBMIT.py
|
| @@ -0,0 +1,52 @@
|
| +# Copyright 2014 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.
|
| +
|
| +"""Chromium presubmit script for third_party/polymer.
|
| +
|
| +See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts
|
| +for more details on the presubmit API built into gcl.
|
| +"""
|
| +
|
| +import os
|
| +import json
|
| +
|
| +def _CheckBowerDependencies(input_api, output_api):
|
| + os_path = input_api.os_path
|
| + cwd = input_api.PresubmitLocalPath()
|
| + components_dir = os_path.join(cwd, 'components')
|
| + bower_json_path = os_path.join(cwd, 'bower.json')
|
| +
|
| + for f in input_api.AffectedFiles(include_dirs=True):
|
| + p = f.AbsoluteLocalPath()
|
| + if p == bower_json_path or p.startswith(components_dir):
|
| + break
|
| + else:
|
| + return []
|
| +
|
| + bower_dependencies = \
|
| + set(json.load(open(bower_json_path))['dependencies'].keys())
|
| + installed_components = set(p for p in os.listdir(components_dir))
|
| + if bower_dependencies == installed_components:
|
| + return []
|
| +
|
| + problems = []
|
| +
|
| + if installed_components - bower_dependencies:
|
| + problems.append(output_api.PresubmitError(
|
| + 'Found components that are not listed in bower.json.',
|
| + items = list(installed_components - bower_dependencies)))
|
| +
|
| + if bower_dependencies - installed_components:
|
| + problems.append(output_api.PresubmitError(
|
| + 'Some of the Bower dependencies are not installed.',
|
| + items = list(bower_dependencies - installed_components)))
|
| +
|
| + return problems
|
| +
|
| +def CheckChangeOnUpload(input_api, output_api):
|
| + return _CheckBowerDependencies(input_api, output_api)
|
| +
|
| +
|
| +def CheckChangeOnCommit(input_api, output_api):
|
| + return _CheckBowerDependencies(input_api, output_api)
|
|
|