Index: gn.py |
diff --git a/gn.py b/gn.py |
old mode 100644 |
new mode 100755 |
index 23521e3abb757aa12e824cf45f3422929fe04e10..067f42e0f1ce62ab43eb5ed3fc55a7747d4e0689 |
--- a/gn.py |
+++ b/gn.py |
@@ -12,55 +12,27 @@ binary. It will also automatically try to find the gn binary when run inside |
the chrome source tree, so users can just type "gn" on the command line |
(normally depot_tools is on the path).""" |
+import gclient_utils |
import os |
import subprocess |
import sys |
-class PlatformUnknownError(IOError): |
- pass |
- |
- |
-def HasDotfile(path): |
- """Returns True if the given path has a .gn file in it.""" |
- return os.path.exists(path + '/.gn') |
- |
- |
-def FindSourceRootOnPath(): |
- """Searches upward from the current directory for the root of the source |
- tree and returns the found path. Returns None if no source root could |
- be found.""" |
- cur = os.getcwd() |
- while True: |
- if HasDotfile(cur): |
- return cur |
- up_one = os.path.dirname(cur) |
- if up_one == cur: |
- return None # Reached the top of the directory tree |
- cur = up_one |
- |
- |
def RunGN(sourceroot): |
# The binaries in platform-specific subdirectories in src/tools/gn/bin. |
- gnpath = sourceroot + '/tools/gn/bin/' |
- if sys.platform in ('cygwin', 'win32'): |
- gnpath += 'win/gn.exe' |
- elif sys.platform.startswith('linux'): |
- gnpath += 'linux/gn' |
- elif sys.platform == 'darwin': |
- gnpath += 'mac/gn' |
- else: |
- raise PlatformUnknownError('Unknown platform for GN: ' + sys.platform) |
- |
+ gnpath = os.path.join(sourceroot, |
+ 'tools', 'gn', 'bin', gclient_utils.GetMacWinOrLinux(), |
+ 'gn' + gclient_utils.GetExeSuffix()) |
return subprocess.call([gnpath] + sys.argv[1:]) |
def main(args): |
- sourceroot = FindSourceRootOnPath() |
+ sourceroot = gclient_utils.FindFileUpwards('.gn') |
if not sourceroot: |
print >> sys.stderr, '.gn file not found in any parent of the current path.' |
sys.exit(1) |
return RunGN(sourceroot) |
+ |
if __name__ == '__main__': |
sys.exit(main(sys.argv)) |