OLD | NEW |
| (Empty) |
1 # Copyright 2014 The Chromium Authors. All rights reserved. | |
2 # Use of this source code is governed by a BSD-style license that can be | |
3 # found in the LICENSE file. | |
4 | |
5 """Chromium presubmit script for third_party/polymer. | |
6 | |
7 See http://dev.chromium.org/developers/how-tos/depottools/presubmit-scripts | |
8 for more details on the presubmit API built into gcl. | |
9 """ | |
10 | |
11 import os | |
12 import json | |
13 | |
14 def _CheckBowerDependencies(input_api, output_api): | |
15 os_path = input_api.os_path | |
16 cwd = input_api.PresubmitLocalPath() | |
17 components_dir = os_path.join(cwd, 'components') | |
18 bower_json_path = os_path.join(cwd, 'bower.json') | |
19 | |
20 for f in input_api.AffectedFiles(include_dirs=True): | |
21 p = f.AbsoluteLocalPath() | |
22 if p == bower_json_path or p.startswith(components_dir): | |
23 break | |
24 else: | |
25 return [] | |
26 | |
27 bower_dependencies = \ | |
28 set(json.load(open(bower_json_path))['dependencies'].keys()) | |
29 installed_components = set(p for p in os.listdir(components_dir)) | |
30 if bower_dependencies == installed_components: | |
31 return [] | |
32 | |
33 problems = [] | |
34 | |
35 if installed_components - bower_dependencies: | |
36 problems.append(output_api.PresubmitError( | |
37 'Found components that are not listed in bower.json.', | |
38 items = list(installed_components - bower_dependencies))) | |
39 | |
40 if bower_dependencies - installed_components: | |
41 problems.append(output_api.PresubmitError( | |
42 'Some of the Bower dependencies are not installed.', | |
43 items = list(bower_dependencies - installed_components))) | |
44 | |
45 return problems | |
46 | |
47 def CheckChangeOnUpload(input_api, output_api): | |
48 return _CheckBowerDependencies(input_api, output_api) | |
49 | |
50 | |
51 def CheckChangeOnCommit(input_api, output_api): | |
52 return _CheckBowerDependencies(input_api, output_api) | |
OLD | NEW |