OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # coding: utf-8 | 2 # coding: utf-8 |
3 | 3 |
4 # This Source Code Form is subject to the terms of the Mozilla Public | 4 # This Source Code Form is subject to the terms of the Mozilla Public |
5 # License, v. 2.0. If a copy of the MPL was not distributed with this | 5 # License, v. 2.0. If a copy of the MPL was not distributed with this |
6 # file, You can obtain one at http://mozilla.org/MPL/2.0/. | 6 # file, You can obtain one at http://mozilla.org/MPL/2.0/. |
7 | 7 |
8 import sys | 8 import sys |
9 import os | 9 import os |
10 import posixpath | 10 import posixpath |
(...skipping 145 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
156 type, value = item.split(":", 1) | 156 type, value = item.split(":", 1) |
157 else: | 157 else: |
158 type, value = ("*", item) | 158 type, value = ("*", item) |
159 if type in result: | 159 if type in result: |
160 logging.warning("Ignoring duplicate value for type %s (key %s in file %s)"
% (type, key, path)) | 160 logging.warning("Ignoring duplicate value for type %s (key %s in file %s)"
% (type, key, path)) |
161 else: | 161 else: |
162 result[type] = value | 162 result[type] = value |
163 return key, result | 163 return key, result |
164 | 164 |
165 def read_deps(repodir): | 165 def read_deps(repodir): |
| 166 parenttype = get_repo_type(repodir) |
166 result = {} | 167 result = {} |
167 deps_path = os.path.join(repodir, "dependencies") | 168 deps_path = os.path.join(repodir, "dependencies") |
168 try: | 169 try: |
169 with io.open(deps_path, "rt", encoding="utf-8") as handle: | 170 with io.open(deps_path, "rt", encoding="utf-8") as handle: |
170 for line in handle: | 171 for line in handle: |
171 # Remove comments and whitespace | 172 # Remove comments and whitespace |
172 line = re.sub(r"#.*", "", line).strip() | 173 line = re.sub(r"#.*", "", line).strip() |
173 if not line: | 174 if not line: |
174 continue | 175 continue |
175 | 176 |
176 key, spec = parse_spec(deps_path, line) | 177 key, spec = parse_spec(deps_path, line) |
177 if spec: | 178 if spec and (key not in result or parenttype in spec.keys()): |
178 result[key] = spec | 179 result[key] = spec |
179 return result | 180 return result |
180 except IOError, e: | 181 except IOError, e: |
181 if e.errno != errno.ENOENT: | 182 if e.errno != errno.ENOENT: |
182 raise | 183 raise |
183 return None | 184 return None |
184 | 185 |
185 def safe_join(path, subpath): | 186 def safe_join(path, subpath): |
186 # This has been inspired by Flask's safe_join() function | 187 # This has been inspired by Flask's safe_join() function |
187 forbidden = {os.sep, os.altsep} - {posixpath.sep, None} | 188 forbidden = {os.sep, os.altsep} - {posixpath.sep, None} |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 args = parser.parse_args() | 333 args = parser.parse_args() |
333 | 334 |
334 if args.quiet: | 335 if args.quiet: |
335 logging.disable(logging.INFO) | 336 logging.disable(logging.INFO) |
336 | 337 |
337 repos = args.repos | 338 repos = args.repos |
338 if not len(repos): | 339 if not len(repos): |
339 repos = [os.path.dirname(__file__)] | 340 repos = [os.path.dirname(__file__)] |
340 for repo in repos: | 341 for repo in repos: |
341 resolve_deps(repo) | 342 resolve_deps(repo) |
OLD | NEW |