Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(748)

Side by Side Diff: gclient_utils.py

Issue 134313007: Depot tools: use the clang-format binaries that are now included (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Fixed gclient_utils_test.py Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « clang_format.py ('k') | git_cl.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 # Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generic utils.""" 5 """Generic utils."""
6 6
7 import codecs 7 import codecs
8 import logging 8 import logging
9 import os 9 import os
10 import pipes 10 import pipes
(...skipping 15 matching lines...) Expand all
26 26
27 27
28 class Error(Exception): 28 class Error(Exception):
29 """gclient exception class.""" 29 """gclient exception class."""
30 def __init__(self, msg, *args, **kwargs): 30 def __init__(self, msg, *args, **kwargs):
31 index = getattr(threading.currentThread(), 'index', 0) 31 index = getattr(threading.currentThread(), 'index', 0)
32 if index: 32 if index:
33 msg = '\n'.join('%d> %s' % (index, l) for l in msg.splitlines()) 33 msg = '\n'.join('%d> %s' % (index, l) for l in msg.splitlines())
34 super(Error, self).__init__(msg, *args, **kwargs) 34 super(Error, self).__init__(msg, *args, **kwargs)
35 35
36
36 def SplitUrlRevision(url): 37 def SplitUrlRevision(url):
37 """Splits url and returns a two-tuple: url, rev""" 38 """Splits url and returns a two-tuple: url, rev"""
38 if url.startswith('ssh:'): 39 if url.startswith('ssh:'):
39 # Make sure ssh://user-name@example.com/~/test.git@stable works 40 # Make sure ssh://user-name@example.com/~/test.git@stable works
40 regex = r'(ssh://(?:[-.\w]+@)?[-\w:\.]+/[-~\w\./]+)(?:@(.+))?' 41 regex = r'(ssh://(?:[-.\w]+@)?[-\w:\.]+/[-~\w\./]+)(?:@(.+))?'
41 components = re.search(regex, url).groups() 42 components = re.search(regex, url).groups()
42 else: 43 else:
43 components = url.split('@', 1) 44 components = url.split('@', 1)
44 if len(components) == 1: 45 if len(components) == 1:
45 components += [None] 46 components += [None]
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
96 97
97 98
98 def FileWrite(filename, content, mode='w'): 99 def FileWrite(filename, content, mode='w'):
99 with codecs.open(filename, mode=mode, encoding='utf-8') as f: 100 with codecs.open(filename, mode=mode, encoding='utf-8') as f:
100 f.write(content) 101 f.write(content)
101 102
102 103
103 def safe_rename(old, new): 104 def safe_rename(old, new):
104 """Renames a file reliably. 105 """Renames a file reliably.
105 106
106 Sometimes os.rename does not work because a dying git process keeps a handle 107 Sometimes os.rename does not work because a dying git process keeps a handle
107 on it for a few seconds. An exception is then thrown, which make the program 108 on it for a few seconds. An exception is then thrown, which make the program
108 give up what it was doing and remove what was deleted. 109 give up what it was doing and remove what was deleted.
109 The only solution is to catch the exception and try again until it works. 110 The only solution is to catch the exception and try again until it works.
110 """ 111 """
111 # roughly 10s 112 # roughly 10s
112 retries = 100 113 retries = 100
113 for i in range(retries): 114 for i in range(retries):
114 try: 115 try:
115 os.rename(old, new) 116 os.rename(old, new)
116 break 117 break
117 except OSError: 118 except OSError:
118 if i == (retries - 1): 119 if i == (retries - 1):
119 # Give up. 120 # Give up.
(...skipping 433 matching lines...) Expand 10 before | Expand all | Expand 10 after
553 while True: 554 while True:
554 file_path = os.path.join(path, filename) 555 file_path = os.path.join(path, filename)
555 if os.path.exists(file_path): 556 if os.path.exists(file_path):
556 return path 557 return path
557 (new_path, _) = os.path.split(path) 558 (new_path, _) = os.path.split(path)
558 if new_path == path: 559 if new_path == path:
559 return None 560 return None
560 path = new_path 561 path = new_path
561 562
562 563
564 def GetMacWinOrLinux():
565 """Returns 'mac', 'win', or 'linux', matching the current platform."""
566 if sys.platform.startswith(('cygwin', 'win')):
567 return 'win'
568 elif sys.platform.startswith('linux'):
569 return 'linux'
570 elif sys.platform == 'darwin':
571 return 'mac'
572 raise Error('Unknown platform: ' + sys.platform)
573
574
575 def GetExeSuffix():
576 """Returns '' or '.exe' depending on how executables work on this platform."""
577 if sys.platform.startswith(('cygwin', 'win')):
578 return '.exe'
579 return ''
580
581
563 def GetGClientRootAndEntries(path=None): 582 def GetGClientRootAndEntries(path=None):
564 """Returns the gclient root and the dict of entries.""" 583 """Returns the gclient root and the dict of entries."""
565 config_file = '.gclient_entries' 584 config_file = '.gclient_entries'
566 root = FindFileUpwards(config_file, path) 585 root = FindFileUpwards(config_file, path)
567 if not root: 586 if not root:
568 print "Can't find %s" % config_file 587 print "Can't find %s" % config_file
569 return None 588 return None
570 config_path = os.path.join(root, config_file) 589 config_path = os.path.join(root, config_file)
571 env = {} 590 env = {}
572 execfile(config_path, env) 591 execfile(config_path, env)
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after
894 913
895 Python on OSX 10.6 raises a NotImplementedError exception. 914 Python on OSX 10.6 raises a NotImplementedError exception.
896 """ 915 """
897 try: 916 try:
898 import multiprocessing 917 import multiprocessing
899 return multiprocessing.cpu_count() 918 return multiprocessing.cpu_count()
900 except: # pylint: disable=W0702 919 except: # pylint: disable=W0702
901 # Mac OS 10.6 only 920 # Mac OS 10.6 only
902 # pylint: disable=E1101 921 # pylint: disable=E1101
903 return int(os.sysconf('SC_NPROCESSORS_ONLN')) 922 return int(os.sysconf('SC_NPROCESSORS_ONLN'))
OLDNEW
« no previous file with comments | « clang_format.py ('k') | git_cl.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698