OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 | 5 |
6 import optparse | 6 import optparse |
7 import os | 7 import os |
8 import re | 8 import re |
9 import sys | 9 import sys |
10 | 10 |
(...skipping 19 matching lines...) Expand all Loading... |
30 | 30 |
31 class VerifyException(Exception): | 31 class VerifyException(Exception): |
32 pass | 32 pass |
33 | 33 |
34 class Rules(object): | 34 class Rules(object): |
35 def __init__(self, platform, filename, contents=None): | 35 def __init__(self, platform, filename, contents=None): |
36 self.glob_prefixes = [] | 36 self.glob_prefixes = [] |
37 self.exact_filenames = set() | 37 self.exact_filenames = set() |
38 self.filename = filename | 38 self.filename = filename |
39 self.platform = platform | 39 self.platform = platform |
| 40 self.exe_ext = '.exe' if platform == 'win' else '' |
40 | 41 |
41 if platform not in VALID_PLATFORMS: | 42 if platform not in VALID_PLATFORMS: |
42 raise ParseException(self.filename, 1, 'Unknown platform %s' % platform) | 43 raise ParseException(self.filename, 1, 'Unknown platform %s' % platform) |
43 | 44 |
44 if not contents: | 45 if not contents: |
45 with open(filename) as f: | 46 with open(filename) as f: |
46 contents = f.read() | 47 contents = f.read() |
47 | 48 |
48 for line_no, rule in enumerate(contents.split('\n')): | 49 for line_no, rule in enumerate(contents.split('\n')): |
49 rule = rule.strip() | 50 rule = rule.strip() |
(...skipping 10 matching lines...) Expand all Loading... |
60 msg = 'Unknown platform(s) %s.' % ( | 61 msg = 'Unknown platform(s) %s.' % ( |
61 ', '.join('"%s"' % platform for platform in unknown_platforms)) | 62 ', '.join('"%s"' % platform for platform in unknown_platforms)) |
62 raise ParseException(self.filename, line_no, msg) | 63 raise ParseException(self.filename, line_no, msg) |
63 if self.platform not in platforms: | 64 if self.platform not in platforms: |
64 return | 65 return |
65 | 66 |
66 # If this platform is included, strip the [...] part. | 67 # If this platform is included, strip the [...] part. |
67 pattern = match.group(2) | 68 pattern = match.group(2) |
68 | 69 |
69 pattern = pattern.replace('${PLATFORM}', self.platform) | 70 pattern = pattern.replace('${PLATFORM}', self.platform) |
| 71 pattern = pattern.replace('${EXE_EXT}', self.exe_ext) |
70 | 72 |
71 if '*' in pattern: | 73 if '*' in pattern: |
72 # glob pattern | 74 # glob pattern |
73 # We only support * at the end. | 75 # We only support * at the end. |
74 if pattern.find('*') != len(pattern) - 1: | 76 if pattern.find('*') != len(pattern) - 1: |
75 msg = '* is only allowed at the end of the line.' | 77 msg = '* is only allowed at the end of the line.' |
76 raise ParseException(self.filename, line_no, msg) | 78 raise ParseException(self.filename, line_no, msg) |
77 | 79 |
78 # Remove the * | 80 # Remove the * |
79 pattern = pattern[:-1] | 81 pattern = pattern[:-1] |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
167 print >> sys.stderr, 'Error parsing rules:\n', e | 169 print >> sys.stderr, 'Error parsing rules:\n', e |
168 return 1 | 170 return 1 |
169 except VerifyException, e: | 171 except VerifyException, e: |
170 print >> sys.stderr, 'Error verifying file list:\n', e | 172 print >> sys.stderr, 'Error verifying file list:\n', e |
171 return 1 | 173 return 1 |
172 return 0 | 174 return 0 |
173 | 175 |
174 | 176 |
175 if __name__ == '__main__': | 177 if __name__ == '__main__': |
176 sys.exit(main(sys.argv[1:])) | 178 sys.exit(main(sys.argv[1:])) |
OLD | NEW |