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

Side by Side Diff: fetch.py

Issue 13588004: fix dryrun, path check in 'fetch' (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/depot_tools
Patch Set: Created 7 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 #!/usr/bin/env python 1 #!/usr/bin/env python
2 # Copyright (c) 2013 The Chromium Authors. All rights reserved. 2 # Copyright (c) 2013 The Chromium Authors. All rights reserved.
3 # Use of this source code is governed by a BSD-style license that can be 3 # Use of this source code is governed by a BSD-style license that can be
4 # found in the LICENSE file. 4 # found in the LICENSE file.
5 5
6 """ 6 """
7 Tool to perform checkouts in one easy command line! 7 Tool to perform checkouts in one easy command line!
8 8
9 Usage: 9 Usage:
10 fetch <recipe> [--property=value [--property2=value2 ...]] 10 fetch <recipe> [--property=value [--property2=value2 ...]]
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 sys.exit(bool(msg)) 153 sys.exit(bool(msg))
154 154
155 155
156 def handle_args(argv): 156 def handle_args(argv):
157 """Gets the recipe name from the command line arguments.""" 157 """Gets the recipe name from the command line arguments."""
158 if len(argv) <= 1: 158 if len(argv) <= 1:
159 usage('Must specify a recipe.') 159 usage('Must specify a recipe.')
160 if argv[1] in ('-h', '--help', 'help'): 160 if argv[1] in ('-h', '--help', 'help'):
161 usage() 161 usage()
162 162
163 dryrun = False
163 if argv[1] in ('-n', '--dry-run'): 164 if argv[1] in ('-n', '--dry-run'):
164 dryrun = True 165 dryrun = True
165 argv.pop(1) 166 argv.pop(1)
166 167
167 def looks_like_arg(arg): 168 def looks_like_arg(arg):
168 return arg.startswith('--') and arg.count('=') == 1 169 return arg.startswith('--') and arg.count('=') == 1
169 170
170 bad_parms = [x for x in argv[2:] if not looks_like_arg(x)] 171 bad_parms = [x for x in argv[2:] if not looks_like_arg(x)]
171 if bad_parms: 172 if bad_parms:
172 usage('Got bad arguments %s' % bad_parms) 173 usage('Got bad arguments %s' % bad_parms)
173 174
174 recipe = argv[1] 175 recipe = argv[1]
175 props = argv[2:] 176 props = argv[2:]
176 return dryrun, recipe, props 177 return dryrun, recipe, props
177 178
178 179
179 def run_recipe_fetch(recipe, props, aliased=False): 180 def run_recipe_fetch(recipe, props, aliased=False):
180 """Invoke a recipe's fetch method with the passed-through args 181 """Invoke a recipe's fetch method with the passed-through args
181 and return its json output as a python object.""" 182 and return its json output as a python object."""
182 recipe_path = os.path.abspath(os.path.join(SCRIPT_PATH, 'recipes', recipe)) 183 recipe_path = os.path.abspath(os.path.join(SCRIPT_PATH, 'recipes', recipe))
183 if not os.path.exists(recipe_path): 184 if not os.path.exists(recipe_path + '.py'):
184 print "Could not find a recipe for %s" % recipe 185 print "Could not find a recipe for %s" % recipe
185 sys.exit(1) 186 sys.exit(1)
186 187
187 cmd = [sys.executable, recipe_path + '.py', 'fetch'] + props 188 cmd = [sys.executable, recipe_path + '.py', 'fetch'] + props
188 result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] 189 result = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0]
189 190
190 spec = json.loads(result) 191 spec = json.loads(result)
191 if 'alias' in spec: 192 if 'alias' in spec:
192 assert not aliased 193 assert not aliased
193 return run_recipe_fetch( 194 return run_recipe_fetch(
(...skipping 29 matching lines...) Expand all
223 224
224 225
225 def main(): 226 def main():
226 dryrun, recipe, props = handle_args(sys.argv) 227 dryrun, recipe, props = handle_args(sys.argv)
227 spec, root = run_recipe_fetch(recipe, props) 228 spec, root = run_recipe_fetch(recipe, props)
228 return run(dryrun, spec, root) 229 return run(dryrun, spec, root)
229 230
230 231
231 if __name__ == '__main__': 232 if __name__ == '__main__':
232 sys.exit(main()) 233 sys.exit(main())
OLDNEW
« 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