OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # | 2 # |
3 # Copyright 2008 Google Inc. All Rights Reserved. | 3 # Copyright 2008 Google Inc. All Rights Reserved. |
4 # | 4 # |
5 # Licensed under the Apache License, Version 2.0 (the "License"); | 5 # Licensed under the Apache License, Version 2.0 (the "License"); |
6 # you may not use this file except in compliance with the License. | 6 # you may not use this file except in compliance with the License. |
7 # You may obtain a copy of the License at | 7 # You may obtain a copy of the License at |
8 # | 8 # |
9 # http://www.apache.org/licenses/LICENSE-2.0 | 9 # http://www.apache.org/licenses/LICENSE-2.0 |
10 # | 10 # |
(...skipping 922 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
933 def __init__(self, root_dir, options): | 933 def __init__(self, root_dir, options): |
934 self._root_dir = root_dir | 934 self._root_dir = root_dir |
935 self._options = options | 935 self._options = options |
936 self._config_content = None | 936 self._config_content = None |
937 self._config_dict = {} | 937 self._config_dict = {} |
938 self._deps_hooks = [] | 938 self._deps_hooks = [] |
939 | 939 |
940 def SetConfig(self, content): | 940 def SetConfig(self, content): |
941 self._config_dict = {} | 941 self._config_dict = {} |
942 self._config_content = content | 942 self._config_content = content |
943 exec(content, self._config_dict) | 943 try: |
| 944 exec(content, self._config_dict) |
| 945 except SyntaxError, e: |
| 946 try: |
| 947 # Try to construct a human readable error message |
| 948 error_message = [ |
| 949 'There is a syntax error in your configuration file.', |
| 950 'Line #%s, character %s:' % (e.lineno, e.offset), |
| 951 '"%s"' % re.sub(r'[\r\n]*$', '', e.text) ] |
| 952 except: |
| 953 # Something went wrong, re-raise the original exception |
| 954 raise e |
| 955 else: |
| 956 # Raise a new exception with the human readable message: |
| 957 raise Error('\n'.join(error_message)) |
944 | 958 |
945 def SaveConfig(self): | 959 def SaveConfig(self): |
946 FileWrite(os.path.join(self._root_dir, self._options.config_filename), | 960 FileWrite(os.path.join(self._root_dir, self._options.config_filename), |
947 self._config_content) | 961 self._config_content) |
948 | 962 |
949 def _LoadConfig(self): | 963 def _LoadConfig(self): |
950 client_source = FileRead(os.path.join(self._root_dir, | 964 client_source = FileRead(os.path.join(self._root_dir, |
951 self._options.config_filename)) | 965 self._options.config_filename)) |
952 self.SetConfig(client_source) | 966 self.SetConfig(client_source) |
953 | 967 |
(...skipping 768 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1722 | 1736 |
1723 if "__main__" == __name__: | 1737 if "__main__" == __name__: |
1724 try: | 1738 try: |
1725 result = Main(sys.argv) | 1739 result = Main(sys.argv) |
1726 except Error, e: | 1740 except Error, e: |
1727 print >> sys.stderr, "Error: %s" % str(e) | 1741 print >> sys.stderr, "Error: %s" % str(e) |
1728 result = 1 | 1742 result = 1 |
1729 sys.exit(result) | 1743 sys.exit(result) |
1730 | 1744 |
1731 # vim: ts=2:sw=2:tw=80:et: | 1745 # vim: ts=2:sw=2:tw=80:et: |
OLD | NEW |