Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
| 2 # Copyright (c) 2012 Google Inc. All rights reserved. | 2 # Copyright (c) 2012 Google Inc. 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 """Utility functions to perform Xcode-style build steps. | 6 """Utility functions to perform Xcode-style build steps. |
| 7 | 7 |
| 8 These functions are executed via gyp-mac-tool when using the Makefile generator. | 8 These functions are executed via gyp-mac-tool when using the Makefile generator. |
| 9 """ | 9 """ |
| 10 | 10 |
| 11 import fcntl | 11 import fcntl |
| 12 import os | 12 import os |
| 13 import plistlib | 13 import plistlib |
| 14 import re | 14 import re |
| 15 import shutil | 15 import shutil |
| 16 import string | 16 import string |
| 17 import subprocess | 17 import subprocess |
| 18 import sys | 18 import sys |
| 19 | 19 |
| 20 | 20 |
| 21 def main(args): | 21 def main(args): |
| 22 executor = MacTool() | 22 executor = MacTool() |
| 23 executor.Dispatch(args) | 23 exit_code = executor.Dispatch(args) |
| 24 if exit_code is not None: | |
| 25 sys.exit(exit_code) | |
| 24 | 26 |
| 25 | 27 |
| 26 class MacTool(object): | 28 class MacTool(object): |
| 27 """This class performs all the Mac tooling steps. The methods can either be | 29 """This class performs all the Mac tooling steps. The methods can either be |
| 28 executed directly, or dispatched from an argument list.""" | 30 executed directly, or dispatched from an argument list.""" |
| 29 | 31 |
| 30 def Dispatch(self, args): | 32 def Dispatch(self, args): |
| 31 """Dispatches a string command to a method.""" | 33 """Dispatches a string command to a method.""" |
| 32 if len(args) < 1: | 34 if len(args) < 1: |
| 33 raise Exception("Not enough arguments") | 35 raise Exception("Not enough arguments") |
| 34 | 36 |
| 35 method = "Exec%s" % self._CommandifyName(args[0]) | 37 method = "Exec%s" % self._CommandifyName(args[0]) |
| 36 getattr(self, method)(*args[1:]) | 38 return getattr(self, method)(*args[1:]) |
|
Nico
2012/02/16 02:13:46
ExecFlock() below does `return subprocess.call()`
| |
| 37 | 39 |
| 38 def _CommandifyName(self, name_string): | 40 def _CommandifyName(self, name_string): |
| 39 """Transforms a tool name like copy-info-plist to CopyInfoPlist""" | 41 """Transforms a tool name like copy-info-plist to CopyInfoPlist""" |
| 40 return name_string.title().replace('-', '') | 42 return name_string.title().replace('-', '') |
| 41 | 43 |
| 42 def ExecCopyBundleResource(self, source, dest): | 44 def ExecCopyBundleResource(self, source, dest): |
| 43 """Copies a resource file to the bundle/Resources directory, performing any | 45 """Copies a resource file to the bundle/Resources directory, performing any |
| 44 necessary compilation on each resource.""" | 46 necessary compilation on each resource.""" |
| 45 extension = os.path.splitext(source)[1].lower() | 47 extension = os.path.splitext(source)[1].lower() |
| 46 if os.path.isdir(source): | 48 if os.path.isdir(source): |
| (...skipping 146 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 193 def _Relink(self, dest, link): | 195 def _Relink(self, dest, link): |
| 194 """Creates a symlink to |dest| named |link|. If |link| already exists, | 196 """Creates a symlink to |dest| named |link|. If |link| already exists, |
| 195 it is overwritten.""" | 197 it is overwritten.""" |
| 196 if os.path.lexists(link): | 198 if os.path.lexists(link): |
| 197 os.remove(link) | 199 os.remove(link) |
| 198 os.symlink(dest, link) | 200 os.symlink(dest, link) |
| 199 | 201 |
| 200 | 202 |
| 201 if __name__ == '__main__': | 203 if __name__ == '__main__': |
| 202 sys.exit(main(sys.argv[1:])) | 204 sys.exit(main(sys.argv[1:])) |
| OLD | NEW |