Index: gclient_scm.py |
=================================================================== |
--- gclient_scm.py (revision 131736) |
+++ gclient_scm.py (working copy) |
@@ -76,6 +76,21 @@ |
return None |
+def CheckCommandExecutable(cmd): |
+ """Find the specified |cmd| in $PATH and checks if it's executable. |
+ Raise an exception if fails. Otherwise do nothing.""" |
+ paths = os.getenv('PATH').split(':') |
satorux1
2012/04/11 17:09:14
this fails if PATH is not set. os.getenv('PATH', '
Jun Mukai
2012/04/12 09:51:14
Done.
Also introduced os.pathsep instead of ':',
|
+ for path in paths: |
+ full_path = os.path.join(path, cmd) |
+ if os.path.exists(full_path): |
+ if not os.path.isfile(full_path): |
+ raise gclient_utils.Error('%s is not a file.' % full_path) |
+ if not os.access(full_path, os.X_OK): |
+ raise gclient_utils.Error('%s is not executable.' % full_path) |
+ return |
+ raise gclient_utils.Error('%s command is not found.' % cmd) |
+ |
+ |
def CreateSCM(url, root_dir=None, relpath=None): |
SCM_MAP = { |
'svn' : SVNWrapper, |
@@ -85,6 +100,7 @@ |
scm_name = GetScmName(url) |
if not scm_name in SCM_MAP: |
raise gclient_utils.Error('No SCM found for url %s' % url) |
+ CheckCommandExecutable(scm_name) |
return SCM_MAP[scm_name](url, root_dir, relpath) |