Index: fetch.py |
diff --git a/fetch.py b/fetch.py |
index 1e5d688f0b177f1d3dcf19c0ba8d4260472d84fa..68795587480cf508bf9c91f78a9058c2cd68d72d 100755 |
--- a/fetch.py |
+++ b/fetch.py |
@@ -24,6 +24,8 @@ import subprocess |
import sys |
import pipes |
+from distutils import spawn |
+ |
SCRIPT_PATH = os.path.dirname(os.path.abspath(__file__)) |
@@ -56,31 +58,41 @@ class Checkout(object): |
def sync(self): |
pass |
+ def run(self, cmd, **kwargs): |
+ print 'Running: %s' % (' '.join(pipes.quote(x) for x in cmd)) |
+ if self.dryrun: |
+ return 0 |
+ return subprocess.check_call(cmd, **kwargs) |
+ |
class GclientCheckout(Checkout): |
def run_gclient(self, *cmd, **kwargs): |
- print 'Running: gclient %s' % ' '.join(pipes.quote(x) for x in cmd) |
- if not self.dryrun: |
- return subprocess.check_call( |
- (sys.executable, os.path.join(SCRIPT_PATH, 'gclient.py')) + cmd, |
- **kwargs) |
+ if not spawn.find_executable('gclient'): |
+ cmd_prefix = (sys.executable, os.path.join(SCRIPT_PATH, 'gclient.py')) |
+ else: |
+ cmd_prefix = ('gclient',) |
+ return self.run(cmd_prefix + cmd, **kwargs) |
class GitCheckout(Checkout): |
def run_git(self, *cmd, **kwargs): |
- print 'Running: git %s' % ' '.join(pipes.quote(x) for x in cmd) |
- if not self.dryrun: |
- return subprocess.check_call(('git',) + cmd, **kwargs) |
+ if sys.platform == 'win32' and not spawn.find_executable('git'): |
+ git_path = os.path.join(SCRIPT_PATH, 'git-1.8.0_bin', 'bin', 'git.exe') |
+ else: |
+ git_path = 'git' |
+ return self.run((git_path,) + cmd, **kwargs) |
class SvnCheckout(Checkout): |
def run_svn(self, *cmd, **kwargs): |
- print 'Running: svn %s' % ' '.join(pipes.quote(x) for x in cmd) |
- if not self.dryrun: |
- return subprocess.check_call(('svn',) + cmd, **kwargs) |
+ if sys.platform == 'win32' and not spawn.find_executable('svn'): |
+ svn_path = os.path.join(SCRIPT_PATH, 'svn_bin', 'svn.exe') |
+ else: |
+ svn_path = 'svn' |
+ return self.run((svn_path,) + cmd, **kwargs) |
class GclientGitCheckout(GclientCheckout, GitCheckout): |