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

Unified Diff: cit.py

Issue 2117943002: Add cipd binary support to cit.py (Closed) Base URL: https://chromium.googlesource.com/chromium/tools/depot_tools.git@master
Patch Set: Actually do it Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: cit.py
diff --git a/cit.py b/cit.py
index a83caf7a939c621f221fff6229cc6d2903f26b2e..b99411bc922a2b054e829fe44d7647d73dcc1f3a 100755
--- a/cit.py
+++ b/cit.py
@@ -9,6 +9,7 @@
This tool does a two things:
* Maintains a infra.git checkout pinned at "deployed" in the home dir
* Acts as an alias to infra.tools.*
+* Acts as an alias to infra.git/cipd/<executable>
"""
# TODO(hinoka): Use cipd/glyco instead of git/gclient.
@@ -75,34 +76,67 @@ def ensure_infra(branch):
sys.stderr.flush()
+def is_exe(filename):
+ """Given a full filepath, return true if the file is an executable."""
+ if sys.platform.startswith('win'):
+ return filename.endswith('.exe')
+ else:
+ return os.path.isfile(filename) and os.access(filename, os.X_OK)
+
+
def get_available_tools():
- tools = []
+ """Returns a tuple of (list of infra tools, list of cipd tools)"""
+ infra_tools = []
+ cipd_tools = []
starting = os.path.join(TARGET_DIR, 'infra', 'infra', 'tools')
for root, _, files in os.walk(starting):
if '__main__.py' in files:
- tools.append(root[len(starting)+1:].replace(os.path.sep, '.'))
- return sorted(tools)
+ infra_tools.append(root[len(starting)+1:].replace(os.path.sep, '.'))
+ cipd = os.path.join(TARGET_DIR, 'infra', 'cipd')
+ for fn in os.listdir(cipd):
+ if is_exe(os.path.join(cipd, fn)):
+ cipd_tools.append(fn)
+ return (sorted(infra_tools), sorted(cipd_tools))
def run(args):
if args:
tool_name = args[0]
- cmd = [
- sys.executable, os.path.join(TARGET_DIR, 'infra', 'run.py'),
- 'infra.tools.%s' % tool_name]
+ # Check to see if it is a infra tool first.
+ infra_dir = os.path.join(
+ TARGET_DIR, 'infra', 'infra', 'tools', *tool_name.split('.'))
+ cipd_file = os.path.join(TARGET_DIR, 'infra', 'cipd', tool_name)
+ if sys.platform.startswith('win'):
+ cipd_file += '.exe'
+ if (os.path.isdir(infra_dir)
+ and os.path.isfile(os.path.join(infra_dir, '__main__.py'))):
+ cmd = [
+ sys.executable, os.path.join(TARGET_DIR, 'infra', 'run.py'),
+ 'infra.tools.%s' % tool_name]
+ elif os.path.isfile(cipd_file) and is_exe(cipd_file):
+ cmd = [cipd_file]
+
+ # Add the remaining arguments.
cmd.extend(args[1:])
return subprocess.call(cmd)
- tools = get_available_tools()
+ infra_tools, cipd_tools = get_available_tools()
print """usage: cit.py <name of tool> [args for tool]
- Wrapper for maintaining and calling tools in "infra.git/run.py infra.tools.*"
+ Wrapper for maintaining and calling tools in:
+ "infra.git/run.py infra.tools.*"
+ "infra.git/cipd/*"
- Available tools are:
- """
- for tool in tools:
+ Available infra tools are:"""
+ for tool in infra_tools:
print ' * %s' % tool
+ print """
+ Available cipd tools are:"""
+ for tool in cipd_tools:
+ print ' * %s' % tool
+
+
def main():
parser = argparse.ArgumentParser("Chrome Infrastructure CLI.")
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698